diff --git a/tlb/transaction.go b/tlb/transaction.go index 76b9da4..72c53c7 100644 --- a/tlb/transaction.go +++ b/tlb/transaction.go @@ -348,7 +348,7 @@ func (a AccStatusChange) ToCell() (*cell.Cell, error) { case AccStatusChangeUnchanged: return cell.BeginCell().MustStoreUInt(0b0, 1).EndCell(), nil case AccStatusChangeFrozen: - return cell.BeginCell().MustStoreUInt(0b01, 2).EndCell(), nil + return cell.BeginCell().MustStoreUInt(0b10, 2).EndCell(), nil case AccStatusChangeDeleted: return cell.BeginCell().MustStoreUInt(0b11, 2).EndCell(), nil } diff --git a/tvm/cell/cell_test.go b/tvm/cell/cell_test.go index 37110c2..03d714b 100644 --- a/tvm/cell/cell_test.go +++ b/tvm/cell/cell_test.go @@ -167,15 +167,14 @@ func TestVarAddr(t *testing.T) { func BenchmarkHash(b *testing.B) { boc, _ := hex.DecodeString("b5ee9c72e20201380001000028250000002400cc00ea01c402a603420374039603a503be03d8044804b8050405ac05ec065606a2076e078e0824084208600880089e08bc08da08f80916093009d80a180b0a0b7a0bc70bea0c0e0cba0cda0cfa0d1a0d380d560d740d900dac0dc80e6e0ef20f160f360f820fce0fee100e102e104c106c108c10ac10cc10ec1196121e12841306132413421360137c142014a014ae14bc14ca14d814e614f415021510151e152c153a1548155615a215b015be15cc15da15e815f6160416ba16c816d616e416f21700170e171c172a1738178417a817cc181918c418e419041951199d19bc19da1a271a731a901aae1afb1b471b621b7e1bcb1c171c321cd81d251da81df51e471e921eb21eff1f4b1f6a1f8a1fd71ff620142061208020cd20ec210c2159217821c52211223022da232723ae23fb246024ad24f9257a25c725e42631264e269b26b827052751276c2810285d28dc2929297529c12a0d2ad82b252b442b522b9f2bbc2c092c262c732c922cdf2cfc2d492d662db32dd02e1d2e3a2e872ea42ec22f702fbd3009309e30ac30ba31073114316131ad31ba31c832153222326f327c32c9331533223330337d33c933d633e4343134e634f435aa35b8366c3720372e377b378837d537e237f037fe384b385838a538b238ff390c3959396639b339c03a0d3a1a3a673a743ac13b383bec3c393c463c543ca13cae3cfb3d473d543da13dae3dbc3e093e163ecd3f823fcf3fda3fe0402e405640aa40b740fa410441e84200420e421d422c423c42e043884430443c444844ce458e4614462646ca478b4794481a483648e74988499449a04a264ae64b6c4b7e4c3e4cc44cd64d7b4de94ea84eaf4f354f464fea504b041011ef55aaffffff11000100020003000401a09bc7a98700000000040101485c0d0000000100ffffffff000000000000000062b2ca7f00001a5752b3ec0000001a5752b3ec042d722c2c0004ee1f01485c09014820d8c400000003000000000000002e00050211b8e48dfb4a0eebb004000600071a8a03482793f3b50aaf5c1948a7daea6509532374f902fe6abeff45f620cb8c99cb00130443feeb6ff454dd7b749d28f509060c2cc668963d39733cf0e844a2880964938114c1372a89491186e2103aabb88851625b18674a78929f3c357ca78e98824227016e016e000b000c1489b85d301a5e194c97f1c275d3ead4bd74c6e4f42bc74ff8ef930e594b8dd9887900084a33f6fda87b6952196d2ab3a76db9754f0792826c8eb9650220c062ca9afc456d18d616915f7809f0e2a9af47f9b741c0d1567a8cc87eb371ae985206197a819b2896f2c00109010a010b010c009800001a5752a4a9c401485c0c493505d505412a231566c8853321bb16a8d291b5c091b6b89f7fb0f4470293ca35028007ab3f46b45071071ce8368191ef3b54ec0db1ad04e1ad4b8e254c89e4022581f2cf4db6b621cfac0f967a6e06286bfd400800080008001d43b9aca00250775d8011954fc400080201200009000a0015be000003bcb355ab466ad00015bfffffffbcbd0efda563d0245b9023afe2ffffff1100ffffffff000000000000000001485c0c0000000162b2ca7c00001a5752a4a9c401485c0960000d000e000f0010245b9023afe2ffffff1100ffffffff000000000000000001485c0d0000000162b2ca7f00001a5752b3ec0401485c0960001d001e001f0020284801010190c062d880448c7c066d5e7f424d3c899b5b7618f97ecf7c54e38dd4c8b25a00013213eaca33f4cbadbd5448172264067fbb377adbe16d7c4681fb55312783f206756a318a5c723a464c78c863a17c0802276f4114c4c8edf27dd9eb88622de8445b07016d00118207cb3d36dad8873eb00023008422330000000000000000ffffffffffffffff81f2cf4db6b621cfa828008400222455cc26aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac23224a27d088a237e001100ac001200ae28480101553f5abf307236fc3eae3b9829943a1b4f895241d07cd2f7fb7106f492a37a4f000222bf000193a937010004ee1f6000034aea52acf0880000d29bdd9fc8200a4106c7d59f0086cde0d05cc99baaddf7a9c5b890aa805e8c96680523524fb4a5a99ff81257e3afd8721409a6a81f22735c0e33400aeb6e7f0a1a5185bb3a3c9deba278be001300142213c3c0000695d4a559e12000b100153201c47dca7c0afc1021a7f8ac40f39fac4e3a34441c180afd0667ef533f08c042258d60f2282e7cde376f0df9fd5ebcc5d8bb19faf6cc57bbbb662485cd76bdce510010000c20004800492211480000d2ba94ab3c2400b30016221162000034aea52acf0900b500172213c480000d2ba94ab3c24000b700182211400000d2ba94ab3c2400b9001922110000034aea52acf09000bb001a22110000034aea52acf09000bd001b2212cc00001a575295678400bf001c2211400000d2ba94ab3c2400c300c4011100000000000000005000213213b82c6f6878b537db3c16dcd5f01397865949762fc38f51cb6aff56594f1062f1edf7f2f7d1549f1d22aab06d9a81c9d49510c3fa6d09dba89fcddb0b8576e4aa016d00118207cb3d37031435feb00068008422330000000000000000ffffffffffffffff81f2cf4dc0c50d7fa828008400223455ee67dd6327a64269ce346e9b1568ef56241f1ba5179cb6d2ac85c5c18646ae12717905e49ef1945ed5b3e03bab93b347378306bc631945e0355ad7507cbada29001b0010cc26aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac23224a2820ffffb7e010e00ac00ad00ae006bb0400000000000000000a42e0680000d2ba95254e1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc028480101173ea53338a2f89f176ad2d6129a90977e8c56e325d959bdf92b7171d9070911000423130103e59e9b6d6c439f580024006a00842313010217dee532a6595718002500260084331392afc8f7cde2b08b147ca948f16cc575bbbd4d383188441e172a5cbc617e05249b737c913fe069b3ce1ce7d550cb95f27f4d428faee54cd295c65c5b9ad7e3ae0027000e01014dad03493b489b5800310032008422130100ca31e1e96b10bbc80027006e2213010058b525488168d908006f0028221301003e470bb61928028800290072221100e1caf7c460aa04680073002a221100e1c6b40db0b41708002b0076221100e11e73378043a2080077002c220f00c021469bdc5408002d007a2210680c021412935422007b002e220f00c021383dbc6da8002f007e219dbceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa81804265fa43649cc3b15c891620f7db60a685fb7054bcc7b8817f05a7e9b73acdede2200b57bfa000034aea549538700302277cff5555555555555555555555555555555555555555555555555555555555555555407aec10e79c0000000000000695d4a92a711804265fa436495d0008000812313010069341ebbd1eac97800330034008422130100e478e48d695dd1e8008500352848010199c07995a55880a2a97e2d1c235a7dfb6b24666e40158c97f7fafb18707d9e01002228480101a40b78c2e39cf3658d455ad29ca1f2bf10cdb87248a8d293e625f4ff821d3ffe001922130100cae245aca13c29a8003600882213010094b93dc1fd640ba800370038221301007e0f065474a37188008b0039221100f6aa376d88c09a280042009f221301007e00c5c8df3ca988008d003a221301007e00c226bc22c348003b0090221301007dfeec4e6f29f348003c0092221301007dfeec4db9634c680093003d221350401f7fbb08ed8733f2003e009621a1bcd9999999999999999999999999999999999999999999999999999999999998200fbfdd8431e351e0e7f7559f2be451b78ede8267e7a8cb24cabd8236aa272459ca146db75357e502000034aea5495385003f227bcff333333333333333333333333333333333333333333333333333333333333333340756c14c3f00000000000000695d4a92a70e00fbfdd8431e351e16d0009800402355ec05b6c5a0ba9cc563f4263b03448b2038580c84db168a6ea499c5ee5d19ddadc8351566240da1dbc38a3b009a009b00412179a062b1fa1362b37a13000080001d81a245901c2c06426d8b4537524ce2f72e8ceed6e41a8ab31206d0ede1c51dc00ebe70af3ef33d8313797763b95f20009d221100f6a49bd9e38f3928004300a1221100ea59d8cb334c9c08004400a3221100ea59cff28ceadfc800a40045220f00c108ba716ce988004600a7219bbd62f8f7bea30f8ab5e9f16c3fb8642b118f56ed1bdc49600dbe5220c8b1af9e040c474f8074f1d14ce894ceb17ddbe1eb5416175db816dcb3d9b86ecacfe305fc3df0baaa80000d2ba95254e1c00047236fcff34517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf21881f480000000000000695d4a92a7110311d3e017f000a900aa00ab220120004a00e2220120005e00c8220120004b00e4220120004c004d220120004e00e822012000f90056220120004f00ea220120005000ec220120005100ee220120005200f0220120005300f2220120005400f4220120005500f628480101a54022f5edbf4beba0648deeb1ffc566c63567b51e34ccd918ab339bdedfec330001220120005700fc220120005800fe22012000ff00592201200101005a220120005b0104220120005c0106220120005d010800b1bd24ee866df51003f6b534d22c17f58175a943d247f628a0d355a187e86e73bd18acb16cc00000000000002a80000001dd3de5878000001dde15bcd058acb28f0000000000000021800000014bff7ab78000001718cb2138a0220120005f00ca22012000cb0060220120006100ce220120006200d0220120006300d222012000d30064220120006500d622012000d70066220120006700da284801015dc67661a1c1ef1294e875961eea55bea7054c7101bc975ed0aa009be971719a000323130103e59e9b818a1aff580069006a00842313010217dee546c430b718006b006c0084284801013c24d22fb5e19c4c445ed87fd2f21aab05a39914a685834b6a1d0cf004891430016b33134d60714c9ba1d20d9c30bf39735d0ad7bfca9eb3ced50edfdae92a4c3339ef4d25e774489adf29b089b2e31b7a68d28886f450600fefbb6f581b3a94423ffc070027000e01014dad035d591ffb5800820083008422130100ca31e1e96b10bbc8006d006e2213010058b525488168d908006f007028480101256e458a2d80eecd799b387aa5e91b156bc583f9f095f0fcea7b2d73cb3d726e00262848010107983f5e2ef514d990c22499abec1ccb4fd222f7489b7febb2044fe24e39318d001a221301003e470bb61928028800710072221100e1caf7c460aa04680073007428480101d405a7172eafa75f0e67e1b0f52d000222f4399c5d7dda059af11c73faf135a300182848010189afd21725efab9748b8b6ef6dcfd892c9f647a939c73831d4f1dbc786b9ec690016221100e1c6b40db0b4170800750076221100e11e73378043a20800770078284801012b525231768abd4f2fc0464b8e5be011db5ebdb3a1ed6d61eebf186e8dc197ba001528480101b81fe7658c95d0f97eabe671d2b147f2da908bd4813119d475886872068353200014220f00c021469bdc54080079007a2210680c021412935422007b007c284801018916fffc4697fa71347a36028c9c0ab1b54bf2c278f9171f7837101f990665f2001128480101a248b81f22333cc28f6b6744e4298aefcd9b6f2dc5d7c99e1da1b28c37f3aa0c0007220f00c021383dbc6da8007d007e219dbceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa81804265fa43649c9d338c13843e706c68e2455ed70bbf93820f28a394eec0b616e855fce8e6cac000034aea567d807007f284801010143b3d2dd671b2559543155e003f847022e510b3a57afabbca05d4069c327ef000d2277cff5555555555555555555555555555555555555555555555555555555555555555407aec10e79c0000000000000695d4acfb011804265fa436495d0008000812848010164a43970f2007a1da6d6fc81773cc095d1cc270e81359e471f3b03469abeb7b5000c214900000027cbb9d1062954439a83a91f27835fb9d2e3e798910356650c3c493c94623464684000ac28480101afccd0b5d74a6fad14fcb8652b14eea3d3d7ad0226c0961aa9992a1f0c2997c1002322130100e478e4a1873531e80085008628480101a5a7d24057d8643b2527709d986cda3846adcb3eddc32d28ec21f69e17dbaaef0001284801016161938bf6cbbbea618b3c71572f00d9392090c9f15e70d1ef9080503b42229c002322130100cae245c0bf1389a8008700882213010094b93dd61b3b6ba80089008a28480101b4d986be6da4a385ebc4d75e7b6864ddae73e6e6431f711cbb3208dfb35945750024221301007e0f0668927ad188008b008c221100f6aa376d88c09a28009e009f284801012234afc4f9aa54d36f371ab851ada0446bbab533a15161ca6f4afd77d69d89520012221301007e00c5dcfd140988008d008e2848010103f584b35917a807e8a2ec65376c8ed2c6ccecf273ba8cb55dbacfe29a84a6140013221301007e00c23ad9fa2348008f0090221301007dfeec628d0153480091009228480101735d9d54218cf8454bd30b70a53ae0de4219178b78f457b844f50dc11b5719f00013221301007dfeec61d73aac6800930094284801017cc50a2d61f5f6979db4641a9451edade1fb234111081a83333a2b03ce9dc373000a2848010110cac8bd77fa246c2bc95d0269759b612312bbc0438ed5eb7dd53116e55e9020000b221350401f7fbb0df4fd0bf20095009621a1bcd9999999999999999999999999999999999999999999999999999999999998200fbfdd86b59e3de15e7c728be36b6cb9aa8d1663f3d4c1e962ab20459e6e56ae211a233bc1e24f52000034aea567d80500972848010150725eee52e86432f846698a08ac153a67bc9ad9c160130af907c3bef05f29480007227bcff333333333333333333333333333333333333333333333333333333333333333340756c14c3f00000000000000695d4acfb00e00fbfdd86b59e3de16d000980099284801016217f872c99fafcb870f2c11a362f59339be95095f70d00b9cff2f6dcd69d3dd000e2355ec05b6c5a0ba9cc563f4263b03448b2038580c84db168a6ea499c5ee5d19ddadc8351566240da1dbc38a3b009a009b009c28480101fb16d1ca45ecb8d4d1f6b1ac903c630cc06f78334bc9b84bf30585e9422cb887000b284801018f1bd34960aa509ff15ef8c648fdcb942bb7a6c14bda5d4988792ce1c7800bee00062179a062b1fa1362b37a13000080001d81a245901c2c06426d8b4537524ce2f72e8ceed6e41a8ab31206d0ede1c51dc00ebe70af3ef33d831379c7db16df20009d28480101e9988188b13457c31092fcc241e6b801ab7dc39b30a0923557a193630fef257f000a221100f6a49bd9e38f392800a000a128480101c6100af2020b8ed627f48ec736f2cfa52e095b513479105a028f40e152c9586f0016221100ea59d8cb334c9c0800a200a3284801011e20584a9cf50091fb4dddfe4d2e98f8c879438cc843e24314604b44cb6f78580012221100ea59cff28ceadfc800a400a52848010141d3f8101f423d32b2cdb23d98d0f34f83db175e427605500093f4a31cd8df03000b28480101e2bc337ece7f3af5171f3265f44c612fc2fcba87f4b4563dc7fdc3285dd6a44d0008220f00c108ba716ce98800a600a7219bbd62f8f7bea30f8ab5e9f16c3fb8642b118f56ed1bdc49600dbe5220c8b1af9e040c474f800b0df7369fde2be70ee4d2e84a552cab4b035685314de3d2e8e12b8d25aa27ae80000d2ba959f601c000a8284801018e634c5cb159b3914109244a95171c97fe56c7ad67ec709cce94bb067893af680007236fcff34517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf21881f480000000000000695d4acfb0110311d3e017f000a900aa00ab284801017269fb9feb45d719ebdbc3b0816b987bab06f43378dc84dc84d55727905482140002004811fd096c000000000000000000000000000000000000000000000000000000000000000028480101986c49971b96062e1fba4410e27249c8d73b0a9380f7ffd44640167e68b215e8000328480101b4ff459f14a389ff7d6ea967ec8d5329f3cff84a787a7c1fcb6e3d447b6175e5001022bf000193a937010004ee1f6000034aea549538880000d29bdd9fc8200a4106c7d59f0086cde0d05cc99baaddf7a9c5b890aa805e8c96680523524fb4a5a99ff81257e3afd8721409a6a81f22735c0e33400aeb6e7f0a1a5185bb3a3c9deba278be00af00b028480101b20e36a3b36a4cdee601106c642e90718b0a58daf200753dbb3189f956b494b600012213c3c0000695d4a92a712000b100b222012000c500c628480101258d602eaa21d621634dcf86692aeae308ff3cf888f3edafc6a5b21848d732f900182211480000d2ba95254e2400b300b4284801014b01ebcf5425735461aa8b83bae89e70fa21e95d2ee85e57b05dad26c1d6d5300016221162000034aea549538900b500b6284801019523e298bdc5f691343d880493b8a6451f3f941c985a7c4a167ba0e1cdb4599600132213c480000d2ba95254e24000b700b82848010137844b3a6262ee12ef028d6b8968b779c5be75d93a7dc1838aba9408a360ea42000e2211400000d2ba95254e2400b900ba28480101ce05363b2c4d123e6af0a2c3edbe06e05e4b55117180062e69624e00f64ae2a7000c22110000034aea5495389000bb00bc28480101aad2366c8dcad53c429dfbea0cd1c479cc6b989ef981314b1382fd58de7c8afd000b22110000034aea5495389000bd00be284801015af875e56b2c21860165b66c58883a203401027a269c372667df9eb27b476259000a2212cc00001a5752a4a9c400bf00c0284801013eb4f392dec5652b5e530a0922b5533c816263d761c0775349d4265cd85bd761000322110000034aea5495389000c100c222110000034aea52acf09000c300c400a9d00000695d4a92a710000034aea54953880290b818926a0baa0a8254462acd910a6643762d51a5236b81236d713eff61e88e0527946a05000f567e8d68a0e20e39d06d0323de76a9d81b635a09c35a971c4a9913c9284801016e527b5263548e810db4a6e4a1f87c5c20d1c7859c8a5e2113127c954400e7b900012848010192f515d5126f2a2fe83d0204780eb95ac49143dae652a6a618f650997621e09a00013201d970752cf49fb39f7ea882f429ef6a8a5ce3eaf9ff4d35bfba6d93ffc9e2a7368180f9da67bd40c08ccea6759238e3e79b631d22aa1dc395bbcec337be6d4e84000f000c2000e100e222012000c700c822012000c900ca284801012a31c24fa32c257e4912fc641c19d5679a5359fb89020b7fe030e3b104be570f000e22012000cb00cc28480101f8b1119a3146337e09b6a8bbd36f93c78f448ea18e0591af0a3726033c7b5345000c2848010136a19e11f370f7b9cf36d83e0cdb68ea6f02ebe02487e3a5ca264a2baa6cd0d8000c22012000cd00ce22012000cf00d0284801015fb934835d63076694fbd0ca2191f6219a2017bfee8370008d48729374463b93000b22012000d100d228480101d98bd6122c9ac0cd3bb56dd7127ca09ede8c606fcb15de38baa4b47f7fe51f04000922012000d300d4284801011bd2caf8f41ad27d29c9c0d34e01bc0457050b3e5cce1754ec06a5fef2e688af000828480101d3073a3cbcbb4a650ca94a719590f8460e5f51d6081fcea01e7e51cfbc60a444000622012000d500d622012000d700d828480101ab9eb8899afa5c8bb9368d94781cf3ebb2eac7fb017a2b6133f9bb7b0e5d7b85000528480101664d4a2f536f0763f76857ceb94de20b4fad7e80b85675b3d02cf79a319b467e000122012000d900da02012000db00dc284801010f0ee7d20301abe555b4a76a6ada745283de3664ecb09ba794fec4d44db79b68000300b1bd1148769c03366e79fc451b06179e791641db92df408fd46e6ffe7ad24d90a90000000000000000000000000000000000000000000000000000000018a8fe848000000000000014000000006740cdc84000000b659904b9a002012000dd00de00b1bce1814fe876c4b4657ef4585f2f9b9158201e2fc77698c43e68104b88fe4ab2314e7cf70000000000000066800000039c368aef00000040a8c4d343b14e7b67800000000000003b000000040b2e294300000028134825e0c002015800df00e000afbc6d1a11a99e030e7005cac69de1a3cdeea9807743355fbf293f897e485ac868c54bf1b80000000000000124000000091627b10a000000bd5670281ec54bf2a8000000000000011400000006eaf842ee000000a8472576d100afbc6f013e1c5535e8ff36e8381a2acf51990fd66e35d30a40c32f50336512de48c56594fe00000000000001440000000ce66b410a000000d9c852602cc565938800000000000000d40000000de9bcb146000000935ab614cd22012000e300e4284801014356834a429921990e0c978c594d3d7734b7cd96dd66c057aa786ccf4f5a258c000e22012000e500e62848010134a3bc4b6c672bb70328222747df9434117f6ee5953dc9447b945d42862c585f000c22012000e700e822012000f900fa22012000e900ea284801016b54a1df1176e4608f655e63cf51ff3deec889dcf9229cceb100c32a12d3288e000922012000eb00ec284801015d23a19db6638756e655885d66767ab5ca9c7044b8d6263da018629630bda2a5000822012000ed00ee284801014e72d9d9406765832f323a591918a7b8cdb1acdbcbdeab3f2bcbc4c93fbc1f99000922012000ef00f02848010138b4953e5411a45c37899ce1936780cec049051f53d3a16bad52de7c7609476e000622012000f100f228480101a9cf62c6624684d83857a4381d9d525efe2e2d5bafd839d9893f80beeaa43f70000522012000f300f428480101d1a07de28968f21c0c3cfe0e69605731ae68b71969d27dd270f99b4079019904000222012000f500f6284801018d455e04c00fba1289866da39c0793758c8d6a4e41ca2dd5ec2c03c76df76c42000302014800f700f82848010122863015f2ff93c8dfe54f980440d8b3b2bd946770d126f32325fc9c8e37cb2e00020073de48c56594fe000000000290b818000004b380fb4ef8000090e500f4af24c56594fe00000000153ae540000004efd6476f22000098db0ac6ce1f00b0bc914560076a5a3e2f68770608073c7920cd095fd22f6624cdc5631150352c9400000000000000000000000000000000000000000000000000000000629df4ce000000000000004000000004a9d9195a0000002b5c8e819328480101d2fc779057e6ebb9d8413f029999ad6426bdc42b841578ba4f1302565b3bb3b8000a22012000fb00fc22012000fd00fe2848010166827a7a38f195b34597175fc019e4dc80b6f714f0b51a2369270417305747e1000922012000ff010028480101cef4f4863fe525820f12b7c79bbc2276d0fdb7e300c55d70d809bfdef1e801f5000728480101c76ad89ed6929dfcdcbaaa4f5720981c659c02b305514971803760369f7017650006220120010101022848010138e8cca37bb83b168adc87a7037092d90c734af074cace4ae828e0cf82b67b30000422012001030104220120010501062848010150d30f1a3fd6f709f0627934b2b31be081dc25bc52b51a353f850efa09ad224d00022201200107010800b1bd635fefc47229e53988915685933558fd7303875055c5949d871dc2688df796800000000000000000000000000000000000000000000000000000000c54be8f6000000000000007e0000000e610f41dc000000593a932aa9000b1bd24ee866df51003f6b534d22c17f58175a943d247f628a0d355a187e86e73bd18acb16cc00000000000002a80000001dd3de5878000001dde15bcd058acb29fc000000000000021c0000001814ffc698000001752c06e7e202848010160ce52c8bd8ed7f87a7643812f7690467a604fcff9ba1811d065a34a0202d78f000201038020010d00010211011366ea62c6b62574b18990480a15bd04daf2d4d5c8e3413a8f62b0ff533b259b00078201150317cca5687735940043b9aca004010e010f01100247a00d9b55c39995181e04934d61a2baf0f5aa35a4e059bb4c55f309227aee336c95200610011401210103d0400111003fb000000000400000000000000021dcd650010ee6b280087735940043b9aca004010150011301db500cc320a00a42e0680000d2ba95254e000000d2ba95254e0850d8a46888759f13cd17310cd46d6e9e821d494944c72f183259690def72a1a5a15278d7e6ad8df707446b0df93af44f8aca68c8a6c286121567c529e8dd7088800027779c00000000000000000a42e04b159653da0112001343b9aca0021dcd6500200201610114012101064606000125020340400116011702037604011801190297bf955555555555555555555555555555555555555555555555555555555555555502aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaad000000695d4acfb00c1013201340397beb33333333333333333333333333333333333333333333333333333333333333029999999999999999999999999999999999999999999999999999999999999999cf80000695d4acfb00040011a011b011c0397be8517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf029a28be3defa8c3e2ad7a7c5b0fee190ac463d5bb46f71258036f9488322c6be7cf80000695d4acfb0004001270128012901035040011d0103404001210082724a765bd03de7e557d03d203239641e4570953914b82a806fdbc2fa10f8c5e3b7e1cb96b8a440f43d5cc8d5334f00711345b647d43e5837cf367741c70934d23703af7333333333333333333333333333333333333333333333333333333333333333300001a5752b3ec0173fbaacf95f228dbc76f4133f3d46592655ec11b5513922ce50a36dba9abf28100001a5752a4a9c262b2ca7f00014080133011e011f0082724a765bd03de7e557d03d203239641e4570953914b82a806fdbc2fa10f8c5e3b78d942e903175e0ffe9857660057e1e7e904397d1bd95e61a0dc318aaabb1b31f02052030240120013700a0431b9004c4b4000000000000000000960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003af7333333333333333333333333333333333333333333333333333333333333333300001a5752b3ec0246660377de4bc319a5038b872892ad701fa6a7f2783ecefd07a68cb4fe32f8b700001a5752b3ec0162b2ca7f00014080122012301240101a001250082728d942e903175e0ffe9857660057e1e7e904397d1bd95e61a0dc318aaabb1b31fe1cb96b8a440f43d5cc8d5334f00711345b647d43e5837cf367741c70934d237020f0409283baec018110126013700ab69fe00000000000000000000000000000000000000000000000000000000000000013fccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccd283baec0000000034aea567d800c56594fe40009e42614c107ac00000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001035040012a01035040012d008272f46adf2640fb8c30d7d053c9c4084f8daeda7399e261dd404d1578691fcb5bd75f4f3be7c22b3f846e0fc1aa8c5ccb4ed9a7e5acc35369f076448359df9b18eb03af734517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf00001a5752b3ec01e9e3a299d1299d62fbb7c3d6a82c2ebb702db967b370dd959fc60bf87be1755500001a5752a4a9c362b2ca7f00014080133012b012c008272f46adf2640fb8c30d7d053c9c4084f8daeda7399e261dd404d1578691fcb5bd7b43acc176be3014d5645fa082b16fe872be1c3b8428621bc03e49a5bc0cf7db202052030340130013103af734517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf00001a5752b3ec0372f7b0548efa5c07fc58c3051d80c9f650039701e834559eabe556240894c83400001a5752b3ec0162b2ca7f00014080133012e012f008272b43acc176be3014d5645fa082b16fe872be1c3b8428621bc03e49a5bc0cf7db25f4f3be7c22b3f846e0fc1aa8c5ccb4ed9a7e5acc35369f076448359df9b18eb02053030340130013100a042665004c4b400000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069600000009600000004000600000000000519ae84f17b8f8b22026a975ff55f1ab19fde4a768744d2178dfa63bb533e107a409026bc03af7555555555555555555555555555555555555555555555555555555555555555500001a5752b3ec03e61d8ae448b107bedb05342fdb82a5e63dc40bf82d3f4db9d66f6f11005abdfd00001a5752a4a9c362b2ca7f0001408013301340135000120008272010f24a4cdf5d7c0f8497739ff731e5175cd3f10069c838b4445caf821c4cf4e6ca0ffac88c5927e1becceb3949e8aa3388a1cd3e5405413900cce63ed93f19902053030240136013700a041297004c4b40000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005bc00000000000000000000000012d452da449e50b8cf7dd27861f146122afe1b546bb8b70fc8216f0c614139f8e04a5134191") - c, err := FromBOC(boc) - if err != nil { - b.Fatal(err) - } b.StartTimer() for i := 0; i < b.N; i++ { - c.hashes = nil - _ = c.Hash() + c, err := FromBOC(boc) + if err != nil { + b.Fatal(err) + } + c.calculateHashes() } b.StopTimer() } @@ -233,6 +232,19 @@ func TestCell_TxWithMerkleBody(t *testing.T) { } } +func TestCell_BlockHashUniTest(t *testing.T) { + boc, _ := base64.StdEncoding.DecodeString("te6ccuICASMAAQAAJm0AAAAkAMwA6gGAAmIC/gMwA0oDWQNyA4wEhAT0BQ4FtgX2BugHWAekCEwIjAj2CUMJjgpaCnoLEAsuC0wLaguIC6gLxgvkDAIMIAw+DFwNCg0uDVIN/g4eDj4OXg58DpoOtg7SDu4PCg+wEDQQWBB4EMQREBEwEVARcBGOEa4RzhHuEg4SLhLYE2ATxBRGFGQUghSgFLwVYBXgFe4V/BYKFhgWJhY0FkIWUBZeFmwWehaIFtQW4hbwFv4XDBcaFygXNhdEF5AXtBfYGCUY0BjwGRAZXRmpGcgZ5hozGn8anBq4GwUbURtsG4gb1RwhHDwc4h0vHbId/x5RHpwevB8JH1UfdB+UH+EgACAeIGsgiiDXIPYhFiFjIYIhzyIbIjoi5CMxI7gkBSRoJLUlASWCJc8l7CY5JlYmoybAJw0nWSd0KBgoZSjkKTEpfSnJKhUq4CstK0wr4iwvLEwsmSy2LQMtIC1tLYot1y32LkMuYC6tLsovFy80L4Evni/rMAgwVTByML8w3DGKMjgyRjKTMqAyrjK8MwkzFjNjM3AzvTPKNBc0JDRxNH40yzTYNSU1MjV/NYw12TXmNjM2QDb0N2w4IDhtOHo4xzjUOSE5Ljk8OYk51TniOfA6PTqJOpY6pDrxOz07SjwAPLY8wjzIPRY9Kj1+PYs9lD54PpA+nj6tPrw+zD9wQBhAwEDMQNhBXkIeQqRCtkNaRBtEJESqRMZFd0YYRiRGMEa2R3ZH/EgOSM5JVElmSgtKeUs4Sz9LxUvWTHpM2wQQEe9Vqv///xEAAQACAAMABAGgm8ephwAAAAAEAQFcY8oAAAABAP////8AAAAAAAAAAGL7u90AABusl7vrgAAAG6yXu+uEpYk+AwAFOWIBXGPGAVw1xMQAAAADAAAAAAAAAC4ABQIRuOSN+0ZVPxAEAAYABwqKBPTVPFzdihzyG0ZA/Z/mBJ1yBqgO+orVswRwW9Ghgz0za8SUx1HcFeKT2oruLoomx5yUkuOsElnlsSJNKY+/ENoBbgFuAAsADBSJmYD0kiPZUykP36g26WWT2iA3GY68wcz8ZL8QwW+fhvAACEoz9v2aCe+A7qvC9i2h3Y6Njxlya+THPWSTqtk2VhEmjFQ8JXqzCxqvVlxyT5lrgSew1WEQPh5vGG5G6aL+jSx7p9yWwAD1APYA9wD4AJgAABusl6ypRAFcY8mtUGDeEa5UtZnyUWZSv8kV786DFV0ENsQUkqouFOLX3rb1GiR3IplBS223L+1UZy+klFYI0IbJ4XbYN5fnBSteAiWB+InEuMrAkZwPxE4l+P/9DMAIAAgACAAVAjKp+IARlU/EAAgCASAACQAKABW+AAADvLNVq0Zq0AAVv////7y9Dv2lY9A0W/TVPFzdihzyG0ZA/Z/mBJ1yBqgO+orVswRwW9Ghgz0zire8kc/uikSA5tJI792XKtIcd16h+cRO+PhEg96KGUIBbgASkCOv4v///xEA/////wAAAAAAAAAAAVxjyQAAAAFi+7vaAAAbrJesqUQBXGPGYAASABMAFAAVJFuQI6/i////EQD/////AAAAAAAAAAABXGPKAAAAAWL7u90AABusl7vrhAFcY8ZgAA0ADgAPABABEQAAAAAAAAAAUAARMhMdtc3JNOOXcP4CUgqFLYe5jp9eFGCXN/2PYC5God0p7ETUNyBAKrRSk9HHSEaboZwqfwF4wdahjVNsDNrEHei6AW0AEYIH4icS/H/+hnAAYgB+IjMAAAAAAAAAAP//////////gfiJxL8f/6GYKAB+ABY0VVYFBXh8evRXt1/LXGzQvukMsZdguMASeBnedPbBTQIbXMJZIizmRhXnEzCtaN1v/eOKo/DPF2/JtB2rCC+iFr8AGwAQzCaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsIyjH/9rdaTfgD6AKYApwCoAGuwQAAAAAAAAAAArjHlAAAN1kvWVKH//////////////////////////////////////////8AoSAEBDRhZGTMcB5HAoou+7uCSHdojFWI3aVx/gTlOrgNM7EMAATITslv1ooQGvZd9j8gshuttzHXVNdKRRvN/mR9pG838qiamUhqaVKTFYyGRZPN04LZpGPPs+x1U4wJQzWuvxOSisQFtABGCB+InEuMrAkZwACcAfiIzAAAAAAAAAAD//////////4H4icS4ysCRmCgAfgAWJFXMJqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwjKMf/qDNwt+ABcApgAYAKgoSAEB3lrfRcA6dF/J06QY2eK6CW25waqne8CJi22eu2EdK0AABShIAQFGlzTBTSSwdU7e8/LK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") + c, err := FromBOC(boc) + if err != nil { + t.Fatal(err) + } + + hash, _ := hex.DecodeString("AF5D3E57D0488A95DE590D84C309C16B33E53961A35E24583072C39CBDBBDBCC") + if !bytes.Equal(c.Hash(), hash) { + t.Fatal("incorrect hash", hex.EncodeToString(c.Hash()), hex.EncodeToString(hash)) + } +} + func TestCell_ShardStateProof(t *testing.T) { boc, _ := hex.DecodeString("b5ee9c72410208010001d400241011ef55aaffffff110103050401a09bc7a98700000000040101dfbf480000000100ffffffff000000000000000064c2108900002408eeb249c000002408eeb249c445c88f2e00070e2a01dfbf4401df8515c400000003000000000000002e02009800002408eea3078401dfbf476558f058d895ff9428b62402b459f62752a8a30b646a36f3d708f8f86a881abca5bffca86eda9bfa2efff8b6a1a0d7106945a08693e3350aaaa48bf44f1a61cd28480101f8bb09213adec01589e2b45268648023e8ef1b21af359433e7f4753fc9944f36000328480101858c4166713e4641a997b9df8fa10894a1f9d4b8966366121c6bc932b5e6afcd00072a8a0449f53a9adbf987c1552e753b6779e52e177db12b23502c568c4329f69ae9d86661874499484e58f0a538220fdc12154b0505bfc51888e6636648dd2a22bdbc2d016f016f0706688c010361874499484e58f0a538220fdc12154b0505bfc51888e6636648dd2a22bdbc2d74b93d76a6a8986dfffbe82438fac84f045b49fb868cbcdc5a0ec39c746f35f1016f0016688c010349f53a9adbf987c1552e753b6779e52e177db12b23502c568c4329f69ae9d86646af4ba188c5bba8e8ecbeac5ef9fb0d641a8776206bc4ad17a725dcf876e2c0016f0015e5b85bf3") c, err := FromBOC(boc)