-【来自SERO社区的投稿】
今天在SERO技术群里,“驴把头”同学问了一个有意思的问题,就是”SERO的UTXO和ACCOUNT模型,会不会因为暴露了智能合约地址,降低匿名性“。
这个问题我以前从没有关注过,不过感觉挺有意思的。
智能合约一般来说是要主动暴露地址,让他人使用的,比如以太坊和EOS上的各种DApp,但匿名资产可能就不一样了,兴许我不太愿意让人知道我的地址,以免别有用心的人不停的尝试合约漏洞(你知道的,合约代码无法更新,万一N年之后发现了什么漏洞,也是完全有可能的)。
于是,我决定自己试试。
我尝试做如下操作:
发行一个隐私币A_PRIV_COIN;
转给发行者A,看看能否从交易里查看到合约地址(甚至是发送接受者的地址);
发行者A转给发行者B,看看能否从交易里查看到合约地址(甚至是发送接受者的地址);
同时,我提前说下结论:
智能合约的地址不会因为执行函数而暴露;
合约的参数(包括地址、额度等)不会暴露;
用户拿到资产的名字和自己的余额,就可以自由转账,完全不用关心地址,想得到地址也没有途径;
首先,我使用如下帐户发行匿名资产:
>sero.accounts[0]"4CZWS8sPWqi2CLFVKANJsif9xSEYVBFG42ma84P4VNghWBrEQAVL9ATELwYJF4FPkSnsMyj9fVSJbmjfj4JbYJ2Y"
并打算转给这个账户一点点
>sero.accounts[1]"jRBKPeyNTCV4urA3uzWNjypiN9NoynyBvAeazdjfRJkiyUgXkQxPBXXuffxaCPsCW1T4Ki4eg56E9ZB9ZJK8iVg"
发行代码如下(发行10亿个,18位小数点,名字叫A_PRIV_COIN):
varinitSupply =1e9;vartokenName ='A_PRIV_COIN';varcoinContract = web3.sero.contract([{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getDecimal","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"reclaimSero","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenSymbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"x","type":"bytes32"}],"name":"bytes32ToString","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addSupply","type":"uint256"}],"name":"addIssue","outputs":[{"name":"success","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"initSupply","type":"uint256"},{"name":"tokenName","type":"string"}],"payable":true,"stateMutability":"payable","type":"constructor"}]);varcoin = coinContract.new( initSupply, tokenName, {from: web3.sero.accounts[0],data:'0x608060408190527f3be6bf24d822bcd6f6348f6f5a5c2d3108f04991ee63e80cde49a8c4746a0ef36000557fcf19eb4256453a4e30b6a06d651f1970c223fb6bd1826a28ed861f0e602db9b86001557f868bd6629e7c2e3d2ccf7b9968fad79b448e7a2bfb3ee20ed1acbc695c3c8b236002557f7c98e64bd943448b4e24ef8c2cdec7b8b1275970cfe10daf2a9bfa4b04dce9056003557fa6a366f1a72e1aef5d8d52ee240a476f619d15be7bc62d3df37496025b83459f6004557ff1964f6690a0536daa42e5c575091297d2479edcc96f721ad85b95358644d2766005557f9ab0d7c07029f006485cf3468ce7811aa8743b5a108599f6bec9367c50ac6aad6006557fa6cafc6282f61eff9032603a017e652f68410d3d3c69f0a3eeca8f181aec1d176007557f6800e94e36131c049eaeb631e4530829b0d3d20d5b637c8015a8dc9cedd70aed6008557fbbf1aa2159b035802d0a4d44611849d5d4ada0329c81580477d5ec3e82f4f0a66009557fa8b83585a613dcf6c905ad7e0ce34cd07d1283cc72906d1fe78037d49adae455600a55610d9f388190039081908339810160405280516020820151600b8054600160a060020a031916331790559091016101de82670de0b6b3a76400006401000000006107df61021c82021704565b600c8190556101f690826401000000006102dd810204565b151561020157600080fd5b805161021490600d90602084019061031d565b5050506103b8565b60008083151561022f57600091506102d6565b5082820282848281151561023f57fe5b04146102d257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f7700000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8091505b5092915050565b60408051818152606080820183526000929091906020820161080080388339019050509050828152836020820152600054604082a1602001519392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061035e57805160ff191683800117855561038b565b8280016001018555821561038b579182015b8281111561038b578251825591602001919060010190610370565b5061039792915061039b565b5090565b6103b591905b8082111561039757600081556001016103a1565b90565b6109d8806103c76000396000f3006080604052600436106100985763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166318160ddd811461009d57806334ce10c4146100c45780636f26d98f146100ef5780637b61c320146101125780638da5cb5b1461019c5780639201de55146101cd578063a9059cbb146101e5578063d57c1ea214610209578063f2fde38b14610228575b600080fd5b3480156100a957600080fd5b506100b2610249565b60408051918252519081900360200190f35b3480156100d057600080fd5b506100d961024f565b6040805160ff9092168252519081900360200190f35b3480156100fb57600080fd5b50610110600160a060020a0360043516610254565b005b34801561011e57600080fd5b506101276102a5565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610161578181015183820152602001610149565b50505050905090810190601f16801561018e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101a857600080fd5b506101b1610333565b60408051600160a060020a039092168252519081900360200190f35b3480156101d957600080fd5b50610127600435610342565b3480156101f157600080fd5b50610110600160a060020a03600435166024356104fb565b610214600435610659565b604080519115158252519081900360200190f35b34801561023457600080fd5b50610110600160a060020a0360043516610737565b600c5490565b601290565b600b54600160a060020a0316331461026b57600080fd5b604051600160a060020a03821690303180156108fc02916000818181858888f193505050501580156102a1573d6000803e3d6000fd5b5050565b600d805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561032b5780601f106103005761010080835404028352916020019161032b565b820191906000526020600020905b81548152906001019060200180831161030e57829003601f168201915b505050505081565b600b54600160a060020a031681565b60408051602080825281830190925260609160009183918391829184919080820161040080388339019050509350600092505b6020831015610411576008830260020a870291507fff000000000000000000000000000000000000000000000000000000000000008216156103fb578184868151811015156103c057fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190940193610406565b841561040657610411565b600190920191610375565b846040519080825280601f01601f19166020018201604052801561043f578160200160208202803883390190505b509050600092505b848310156104f157838381518110151561045d57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000281848151811015156104b657fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190920191610447565b9695505050505050565b600b54600160a060020a0316331461051257600080fd5b600d805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815284936105aa93919290918301828280156105a05780601f10610575576101008083540402835291602001916105a0565b820191906000526020600020905b81548152906001019060200180831161058357829003601f168201915b505050505061077d565b10156105b557600080fd5b600d805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815261064e938693919290918301828280156106435780601f1061061857610100808354040283529160200191610643565b820191906000526020600020905b81548152906001019060200180831161062657829003601f168201915b5050505050836107b4565b15156102a157600080fd5b600b546000908190600160a060020a0316331461067557600080fd5b61068783670de0b6b3a76400006107df565b9050610695600c54826108a0565b600c55600d805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152610730938593919290918301828280156107265780601f106106fb57610100808354040283529160200191610726565b820191906000526020600020905b81548152906001019060200180831161070957829003601f168201915b5050505050610914565b9392505050565b600b54600160a060020a0316331461074e57600080fd5b600b805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6040805160208082528183019092526000916060919080820161040080388339019050509050828152600154602082a15192915050565b60006107d784848460206040519081016040528060008152506000600102610954565b949350505050565b6000808315156107f25760009150610899565b5082820282848281151561080257fe5b041461089557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f7700000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8091505b5092915050565b60008282018381101561089557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60408051818152606080820183526000929091906020820161080080388339019050509050828152836020820152600054604082a1602001519392505050565b6040805160a080825260c0820190925260009160609190602082016114008038833901905050905086815285602082015284604082015283606082015282608082015260025460a082a16080015196955050505050505600a165627a7a72305820ad4bea21339979faed42cac3a38b48eed633b23d2017170a39871fe4cf3739710029',gas:'4700000',value: web3.toTa(1)},function(e, contract){console.log(e, contract);if(typeofcontract.address !=='undefined') {console.log('Contract mined! address: '+ contract.address +' transactionHash: '+ contract.transactionHash); } })
合约生成以后,输出如下地址:
Contractmined! address: g7gAEHVwjMcKpGRVrd4HfbPHjhv7SmUoUHFXo49VBbDfsi46S8nyHxcoT6fcqVQM9KrWP7Jf84P5TdEp45PALLH transactionHash: 0x86d3c78e21f7379df8dcf5083d5abe1b59d293318a484d32a54fe65f1d0eaf5c
同时,如果打印coin对象,含有如下属性:
> coin{ abi: [{constant:true, inputs: [],name:"totalSupply", outputs: [{...}],payable:false,stateMutability:"view",type:"function" }, {constant:true, inputs: [],name:"getDecimal", outputs: [{...}],payable:false,stateMutability:"pure",type:"function" }, {constant:false, inputs: [{...}],name:"reclaimSero", outputs: [],payable:false,stateMutability:"nonpayable",type:"function" }, {constant:true, inputs: [],name:"tokenSymbol", outputs: [{...}],payable:false,stateMutability:"view",type:"function" }, {constant:true, inputs: [],name:"owner", outputs: [{...}],payable:false,stateMutability:"view",type:"function" }, {constant:true, inputs: [{...}],name:"bytes32ToString", outputs: [{...}],payable:false,stateMutability:"pure",type:"function" }, {constant:false, inputs: [{...}, {...}],name:"transfer", outputs: [],payable:false,stateMutability:"nonpayable",type:"function" }, {constant:false, inputs: [{...}],name:"addIssue", outputs: [{...}],payable:true,stateMutability:"payable",type:"function" }, {constant:false, inputs: [{...}],name:"transferOwnership", outputs: [],payable:false,stateMutability:"nonpayable",type:"function" }, { inputs: [{...}, {...}],payable:true,stateMutability:"payable",type:"constructor" }],address:"g7gAEHVwjMcKpGRVrd4HfbPHjhv7SmUoUHFXo49VBbDfsi46S8nyHxcoT6fcqVQM9KrWP7Jf84P5TdEp45PALLH",transactionHash:"0x86d3c78e21f7379df8dcf5083d5abe1b59d293318a484d32a54fe65f1d0eaf5c",addIssue:function(),allEvents:function(),bytes32ToString:function(),getDecimal:function(),owner:function(),reclaimSero:function(),tokenSymbol:function(),totalSupply:function(),transfer:function(),transferOwnership:function()}
我的合约里,并没有把所有余额发送到Owner,因此都还在合约地址上。
>sero.getBalance(coin.address){tkn: {A_PRIV_COIN:1e+27,SERO:0 }}
试着手动发送到Owner,看看会发生什么?
>coin.transfer(sero.accounts[0],1e27,{from:sero.accounts[0]});"0xfffec70bf0152e6a63aa3ede6f551c98a4e2ad39764195f446a6de446deee89a">sero.getBalance(sero.accounts[0]){tkn: {A_PRIV_COIN:1e+27,SERO:6.2832e+21 }}
查看交易的信息,看看是否有什么信息可供利用
>sero.getTransaction("0xfffec70bf0152e6a63aa3ede6f551c98a4e2ad39764195f446a6de446deee89a");{blockHash:"0x77bc209371c31a2de1538822a62e21dde46724569c7853557e08f6d8417e52c0",blockNumber:1680,from:"2FXg4eZUYcP5wMyAvoDAKMCtWhSmQAArTbjpApJhNwfLUMrgw8vYQTsHwTD9H6ZXKxD5cCN8pvWHRchtdsjDZHkkDUDKYJJkYT4f73KzmdSvL93obWzqvBdeszLeAJ2gaHgW",gas:90000,gasPrice:1000000000,hash:"0xfffec70bf0152e6a63aa3ede6f551c98a4e2ad39764195f446a6de446deee89a",input:"0x21bb3aed8684d74be791c3c8895a5ffd0001d28c8e0a39f175fa2f6a2ef8507d5ceaeba65730b717d077d6c6bf8a384fba09d5e6d15ec7fe44f70e5948514ff39794d0a19575b132cca69eb2da2415733614f7e9c53a9c9bdb67358e5c0cd48a2685523c4fe106e23130009ada3076ebad2ba9059cbb0000000000000000000000003982555540cd5305a7c2d7a180c5e9871a689ff70000000000000000000000000000000000000000033b2e3c9fd0803ce8000000",nonce:0,stx:{Bcr:"0xecdc70b1e38de70924b4a449e8d827079a42abd749959c7662b28986c42d52ad",Bsign:"0x35ed1907097fbd96d88fba0a2a8048eb4bd5d9ca4f33fe0f1e4ffe96513feba3dc5276fa2ea61529a8396486fd6c4ecb4fc49f053a68be6eb04d5517c8420504",Desc_O_Ins:[],Desc_O_Outs:[{Addr:"0x21bb3aed8684d74be791c3c8895a5ffd326b292afdbed31b73ac11eb78d022df8828397c2a51a73e08f1c2df284bc0b94b854b7871e33043331a64591c1bdc920000000000000000000000000000000000000000000000000000000000000000",Currency:"SERO",Memo:"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",Value:0}],Desc_Pkg:{Close:null,Create:null,Transfer:null},Desc_Z_Ins:[{Anchor:"0xb2cfa6a5c1cd3b865cae43c07b352fe7f3fd671a044d1101524af2e8e8ef3a8d",AssetCM:"0x9f829396b19bdedaa5080a27bc8f181b22b833cd3475fa2abfbe91cb0957639a",Nil:"0xe34333770ef5f04c7bf52f946885e0bb9dbd56114d6f1168f2e5a02e7fed19a6",Proof:"0x02e6bb23dbefeaa9345baaaf6b930c6812fb7d42a50c7c666927e929896bd0231f0b36d52a10f6cd9381cfa90b786a4f66dfce11d9fa85d9befeb4fc4b5ff18b4c91d5bad9662b0e7478dea7777cff751ab806dbd807280787baa8a7946d3ed6650703b15246592c56bba7e80a8823c2188effd99572d17968a7a0db0a78cb98770710",Trace:"0x01f9625829e180448eb4a271bbcdd6213ff8d0b805ba7681b197044d2f19621a"}],Desc_Z_Outs:[{AssetCM:"0x8ba96abfb79f0331891819077795bad3c7890eefad355eb90412c6cc68b1cb9d",EInfo:"0x1bd8b7a6142d250cabc0dd53a43e4ce7c6ef3465301ff75cf077defaa92a30b262914bde2f4340ea19d281f6ad89d95f8ec4ba25ec029d65672e3f392f6d2245aa2b592ad8515f499abb14c49010888b0822886750bd2c702c390bacc4ef45903be0a2326609941215e325de63372015a8f29f19f413a217c73074fb36340295a52764baf5d1f2cd56d26c842abc499b1d3d9b4f5272ca388eb2759be21938b3e480ff1bcb41fdb3ff3b033b6fdb216f611d3210cd96fb1eb5549be4ec5d73c4655e4457e06d436bcad957b5c0e853225b6d22f7bde2b969b7958f4d1a9aa077",OutCM:"0xb74a9aae5492ed533499dedae715e91f691389731c9e566475737ada4c805819",PKr:"0xf359130cd588154c34cac09e683bfbe68544b8d6d4807225a1c06ad11d73600e59560480018b7b304a361f943c7b11a44992317b4049bb27166dd42fe80cd126c864d80f03ee465e808fb2abdd1e6a8b0f15146915b4387c1329a8617618a986",Proof:"0x02d79045117a3cf59d6b842c984c699147f900f93e1baa374375ab24e79e40f1130af22473387a13d2a8664c077b21780299c238cef86691371bdedb2c9597b4b70311c1e633d1a7d58c267304d7c307146c8f5b127de3f4fb1aff133fd1980ead0002817e63f2ecf5da6a85939b9a73aad422544f7f94faa8f38f8dbdfc7ac355ba2a",RPK:"0x8e726482badf9f0f5d9a02c150cc6e43a39be10309bd438160e338dcbcd356d0"}],Ehash:"0xae555a1affe1a2443931f75b0b05dff7fbafdcde63e50519855efbed27d5fca6",Fee:{Currency:"0x000000000000000000000000000000000000000000000000000000005345524f",Value:90000000000000},From:"0xd28c8e0a39f175fa2f6a2ef8507d5ceaeba65730b717d077d6c6bf8a384fba09d5e6d15ec7fe44f70e5948514ff39794d0a19575b132cca69eb2da2415733614f7e9c53a9c9bdb67358e5c0cd48a2685523c4fe106e23130009ada3076ebad2b",Sign:"0xf676e7051415aa2974824921a15f4e7e5039cb0b62bfcc045e8aef5d7636fc17ab21472ed58751948cc62b7a8ba776853858b73ccb8bed9b68cba29b9a2c0200"},to:"CcwN3ww8iDD6d84AM4iH425Wv9usnmohNkRaqT47RsYZeyPmtpksfY4aNaHpmL2AGCr9tBY8DT9cxE5DK48vocBixFVGLuBYZUG3cHphmK1nMNFP2kw1BQ5EpzsArKUXABR",transactionIndex:0,value:0}
比较安心的是,此处并没有出现A_PRIV_COIN的智能合约地址和我的账户地址,还是比较安全的。要知道,以太坊的合约执行,是有明显的指向的,就是from发往智能合约的一笔交易。SERO很好的隐藏了这点,同时也像普通交易一样,隐藏的交易的具体金额。
也就是说,到此为止,如果我不打算使用别的功能,那我的ABI和合约地址可以扔了,不用再保存了,反正只有名字也能自由发送了。
这时候我从A发往B
>sero.sendTransaction({from:sero.accounts[0],to:sero.accounts[1],cy:"A_PRIV_COIN", value:web3.toTa(10)});"0x59b60dcb62917b8e4b1a82f117a716e04aa9fa4f32626cf9a5285c37b3301599"> sero.getBalance(sero.accounts[1]){ tkn: { A_PRIV_COIN: 10000000000000000000 }}
由于交易信息里无法查看到A的地址和合约的具体地址,因此可以放心的认为,B所能知道的信息,就只有名字A_PRIV_COIN,和自己的数量。无论如何B是无法得到合约的地址的,除非A告诉他。
当然了,如果你查看这次交易,也是啥也看不出来的,和之前的交易一样。
>sero.getTransaction("0x59b60dcb62917b8e4b1a82f117a716e04aa9fa4f32626cf9a5285c37b3301599");{blockHash:"0xdd3d86abc369198a69323debe6033ed6b3499f999a0d8821cc918ffddf25bc96",blockNumber:2044,from:"ZLBqVuqHVPh4gcRGqaabp1T1VvFpANAx7pu65Bk3VPs3AB6zS7SyL8uYTsvr3oaPTK4yEtGantqPDNsqkSsVLmZJhpd7Js3DGFJx9CZsXLUewVQiyzUbzMqJHk8eW8kXb79",gas:90000,gasPrice:1000000000,hash:"0x59b60dcb62917b8e4b1a82f117a716e04aa9fa4f32626cf9a5285c37b3301599",input:"0x",nonce:0,stx:{Bcr:"0xd4353edb6048cbb720aca17f4b82202a777c76e0e06a30f1e5352d6b80496a27",Bsign:"0x98091092844a827c8f8dd3e86b6df0e746cbc24797666eaf0e7540da668be0a1626de3d7cdf0bc11beddfa006ab2062c964e6eaa69ef14b0e26630ca9d48af02",Desc_O_Ins:[],Desc_O_Outs:[],Desc_Pkg:{Close:null,Create:null,Transfer:null},Desc_Z_Ins:[{Anchor:"0x5d324bdf8316821a698ed64f2d890e18cab5f500e996580ddeafd6a85d790881",AssetCM:"0x9760e1c55be260ac9456e129a4d93b806a2cc3c60deea972efb898ceee55d220",Nil:"0xe29b9fd5c5d87194dfd9166a1aa5dd1ccd25d8ee27fa867c9ccc81b4cdd782ab",Proof:"0x022636ea4802b41d6bb319860df7c78db46722a27a6518f3e08fe6a5b1ee096c220b139d4b91077ccb16d12138c73f75789fdf2a73fc3033c229563c330d1e4135cf848bf0d5a80d5cfb315b71cc79bb3764e1fcc3748983d274f51ca08cfdff1e0802609324dec3334ea50f6dbec3a3190cf974bfa79e992ed948e66381bd7a35e126",Trace:"0xf757f88027560bb9db26492a6886fa849f91b43c86595cd2d98826ab1b85f822"},{Anchor:"0x5d324bdf8316821a698ed64f2d890e18cab5f500e996580ddeafd6a85d790881",AssetCM:"0x0094a59ea1ddfe276c9453c9a696f7696d80c838df19863f68f04fd48ffde119",Nil:"0xe9471562229cea8b49fb65cbdcce2d9bbbfab8f379e3942e4f69fec7698be89e",Proof:"0x02e92520c0d0b99099cf633307dc25d2b1e92b1d7e499fe3e4c4ac497640c2f12d0b8778036095d91a5f6123f00c4b4aceecab3e61d4768f5c4068257e5263c1a8b7be3781784e2c0861595c70a4607de01ee6e97b4f5f5dd8320547229f00fb3700038c67852fc8c5c595858e62b8c53967337045cb00e5765c51dc2344b7ae5b4025",Trace:"0x6818736fc4c6cbfcf79cf72a46bea361dfd5c451bc52f54808c1d3b2d1a3d02f"},{Anchor:"0x5d324bdf8316821a698ed64f2d890e18cab5f500e996580ddeafd6a85d790881",AssetCM:"0x9bd51f346c7e14da9cfb2d18c91ee33c2dbd7d2dc6de24849db848df1ed9b824",Nil:"0xdc2ccd34bd406f424d14816ae1e974801fd3dada1ad53f63bcdb5a320792281d",Proof:"0x02647271b8cd8bcecd9e563169721033d281da9cebc8cc6870953fabe558bcbd010b81b0dcece1a5f8d19b1c5aa2572b67a129861422569626461d5c23edf1a82ff9e8719794a164ea8f7e7f9406bde9a64bd0c19a41d31a27d1923d88c122dee1040280a5d18c62341c9783fd12456bda197fc4245c3f30b4ee7cf3e3521e71c87a27",Trace:"0xc85775491e558cb42e0c1859ab390dd6ee1a5a221b757935d23a6ebad398859f"}],Desc_Z_Outs:[{AssetCM:"0xbeaa35a173452a8502304b042d5dfbd0ab53b48e9cf86eb64b0ccc0803c0b222",EInfo:"0x1a7fa678d49d91c24f1c10cdd68989b61cf364176880022b39e1072b0b134f1fe1ce19ca0ae4f98af1c08cd79f6160b5d46ca5723e72ff867e802b39a15e52bbe610b31fcf159237b529711a4243e7dc465f8fe67d802e64f334409f16e565a599abbab2ea0618ce27098e308b7899d3f60c83a42d469deeb573406000c6325bfc4e7d6864fcbea5fb9f631fac56d4261ed02c9d90a6d0ae28594055442b2b90757843c6710fe8e39c65f9815f0d16f5138bc54983245b6f4a92ac0356c29dd100076455dc0899b5ccd430fd66c401b0dfb0b6d69e60faa7a2cdb344b2bc770b",OutCM:"0x704fe0d78e3917368440fd4f173f15bd34dc50dfc2330096fdaf3e4ee2c58e1d",PKr:"0xa3288fa610fa270b2b96e5fb9b106e39906d0ad4e4e5bfa58c7e95389e0851a0b60d0bf2e9f8ef21efe860ad1a46be60806945e85b56e2fe0c281ee2a7398626ce592f1538d151f99f1219db9f798a2c56d5b12110ccd81f8362792d340ada21",Proof:"0x039a3141661bb319d44d1aaa98aa7f5bb0bb6e0b3f610757229f4b11c5ad8d4a2f0bedb8b10603cec177a1571f83f8ae3b3ed35fe0a157d5395021a0ceab5b66e9a41b212080d7d651552bf726b4bf35d529744d46c8f1d073feda8744cadc5db90703f951a12e6a9b67a06c2838554c6d1caccbedd36cb7d770d2f9f7a6cab8c71c02",RPK:"0x7dd119ca46e1a3a6e8b6c739073607b9dd0db61009767a5749c183d77e92256b"},{AssetCM:"0x216b0bdb728b45b1c9e3be9cb559616646b90a388642da74df727da1059cb324",EInfo:"0xac045b39370dfe4d62546237776b081b0f96e9e591e542c7c148ae516c095182346612f58f2a01b8deadb6e85e6b9af0eef9439d182c01377132f239013015d929d036b344905a20166a259e5e60e046057543096e7fccc13d993e070a42c8d13f07db53b049973a01e1c84d189dcfa62fddca397d59f9e705ca1f50025fb11e10677378338b47c66dcbdcf722a86c5e15e01822392bb13193c467aad1fd5aa4bc5009281a4986c0c1dd54d87fa1222e70d7db356e9ede0caa1cf59175262b74aecf6adc18c0d5591b9378ff984f3465be90b1ff2fe62bd3b6f5f216c0043af3",OutCM:"0xb92684af743c54f68b0c23f299db0925a47387d8769bbb4a1b9c7fe12ea55914",PKr:"0x220d2f0e64cc18ff68d718e64e432edf916b44c74daf0ba29ac8720f8de3e218c1dc31551f0ebb3cf11b6b763ae908810e0948fe76e0bd8f042eff05d1962528a0b38242366310d1bd339fc88c6e2aa20e8f09990181072d24e6cf1a8244ac29",Proof:"0x03eb9efd23f25b89d2fc31486daa99a65497e469ab52a01698b0e9f92c987e55190aa931f96368dbdb3d8ece71cafcfc7eb15ac34039d681f538e483b94a6b88af7cfd26063211ceff672d5d7ff29fc1d57cbd42187425ee6d811eef4a47671fc70102497a879002323ee081fed732b1d0b13bf2f003987e939f2d9fe576aa129a751a",RPK:"0xe9477dd2762b7bdaa531ab85cc3e7e3f889184dd9ecf61de594cb4c2d5a3fee0"},{AssetCM:"0x967a7363b5af55c4e61b6235cfc38a026384d795799c863fc1dcff6f73d6d425",EInfo:"0xe53c07207982249b16631222682fda5d47f277f7b4b3d13e29450f6683c490252d9890992cfc8c481c1bc0f7cd4870666280f72c0ee544ab6edc127d23fd6cc3c5e18fc0eb2e51ebd33727f43b555767bb4308c8a662118b93af42844b4d8f8a0cf3dd9e3c11c42285b42b7e08b1718960f173c8f92f4e47b7e4dad048f24ffc9f1caa6428f43fbfa6fbaaee3fbfe6dfdc7d0822b3e88bc4d57cd8b6489379acabc9e98202db8656ec550f848dd35804d6ece5693d8e64b60ffd0743507394fd9d562cbf0b17b6ab0107c4fe316376fd587648bfbef9a10662de99f57acc7fe8",OutCM:"0x5cf10cb2fe8f397078bf4b3669ddd3e02bbf1713c00e4568363f582df1542091",PKr:"0x24acbc91f99f71dc344ae8f6e2adbabc7afc7c02711fc6386930218200c63685b194dd47278616395924aacd1fed02586cbf20110e4029c411421cd4ca0b5c150471b7fd2332d6ddcc4a341cb9a1aebd20f3a969eab5ef2b03c879b5dcc2270e",Proof:"0x03fe8097fb31cc2c3ad458e4d93b6e1fd146ac70e7be58022e13a90bb42c5934140ab20d0625fab2eaa65de1e01a41923dd0e5b2409b6545a77dce56337f1545fa68fa93f5bcd20911ae3981b3abea66205a3b47c3bc6a4878dab57ce759a3899e07029cbe7ea31110aaf33c017088641618ea31c7fbdfd910cd8ac078e1d8eeb55113",RPK:"0xfa61dac0f8e4b724c382fd9bf12df335310552fe03da4f15945db83122b2e0df"}],Ehash:"0xe062488ffe92fd654f106274496bbbe3741b2c37f51a2b3c4f89517befb4b00c",Fee:{Currency:"0x000000000000000000000000000000000000000000000000000000005345524f",Value:90000000000000},From:"0x5ddaf7dfbf3fb96413539270983dc6c44227f8b57204926b5f5bcc57d6fb0599d6db96d3ff90aa4c6d850d886812f6e66ad01329fe6f4d1cee007c371d8589a5b31ddf2787613249e448af0abb89711463287597af61ce16ab951569553620ac",Sign:"0x9032810c934157ec0ed1856747e19a76d83fe2519e2b4d7534a39bddd3a6bd2228d4b8ed9aecd8180d61366e09789d5a527dbf897a3218abd2ddf54537ed3b03"},to:null,transactionIndex:0,value:0}