github.com/trezor/blockbook@v0.4.1-0.20240328132726-e9a08582ee2c/tests/dbtestdata/dbtestdata_ethereumtype.go (about)

     1  package dbtestdata
     2  
     3  import (
     4  	"encoding/hex"
     5  	"math/big"
     6  
     7  	"github.com/trezor/blockbook/bchain"
     8  )
     9  
    10  // Addresses
    11  const (
    12  	EthAddrZero       = "0000000000000000000000000000000000000000"
    13  	EthAddr3e         = "3e3a3d69dc66ba10737f531ed088954a9ec89d97"
    14  	EthAddr55         = "555ee11fbddc0e49a9bab358a8941ad95ffdb48f"
    15  	EthAddr20         = "20cd153de35d469ba46127a0c8f18626b59a256a"
    16  	EthAddr20EIP55    = "0x20cD153de35D469BA46127A0C8F18626b59a256A"
    17  	EthAddr9f         = "9f4981531fda132e83c44680787dfa7ee31e4f8d"
    18  	EthAddr4b         = "4bda106325c335df99eab7fe363cac8a0ba2a24d"
    19  	EthAddr7b         = "7b62eb7fe80350dc7ec945c0b73242cb9877fb1b"
    20  	EthAddr7bEIP55    = "0x7B62EB7fe80350DC7EC945C0B73242cb9877FB1b"
    21  	EthAddr83         = "837e3f699d85a4b0b99894567e9233dfb1dcb081"
    22  	EthAddrA3         = "a3950b823cb063dd9afc0d27f35008b805b3ed53"
    23  	EthAddr5d         = "5dc6288b35e0807a3d6feb89b3a2ff4ab773168e"
    24  	EthAddr92         = "9248A6048a58db9f0212dC7CD85eE8741128be72"
    25  	EthAddrContract4a = "4af4114f73d1c1c903ac9e0361b379d1291808a2" // ERC20 (VTY)
    26  	EthAddrContract0d = "0d0f936ee4c93e25944694d6c121de94d9760f11" // ERC20 (MTT)
    27  	EthAddrContract47 = "479cc461fecd078f766ecc58533d6f69580cf3ac" // non ERC20
    28  	EthAddrContractCd = "cda9fc258358ecaa88845f19af595e908bb7efe9" // ERC721
    29  	EthAddrContract6f = "6fd712e3a5b556654044608f9129040a4839e36c" // ERC1155
    30  
    31  	// non contract
    32  	// EthAddr3e -> EthAddr55, value 1999622000000000000
    33  	EthTxidB1T1          = "cd647151552b5132b2aef7c9be00dc6f73afc5901dde157aab131335baaa853b"
    34  	EthTx1Packed         = "08e8dd870210a6a6f0db051a6908ece40212050430e234001888a40122081bc0159d530e60003220cd647151552b5132b2aef7c9be00dc6f73afc5901dde157aab131335baaa853b3a14555ee11fbddc0e49a9bab358a8941ad95ffdb48f42143e3a3d69dc66ba10737f531ed088954a9ec89d97480a22070a025208120101"
    35  	EthTx1FailedPacked   = "08e8dd870210a6a6f0db051a6908ece40212050430e234001888a40122081bc0159d530e60003220cd647151552b5132b2aef7c9be00dc6f73afc5901dde157aab131335baaa853b3a14555ee11fbddc0e49a9bab358a8941ad95ffdb48f42143e3a3d69dc66ba10737f531ed088954a9ec89d97480a22040a025208"
    36  	EthTx1NoStatusPacked = "08e8dd870210a6a6f0db051a6908ece40212050430e234001888a40122081bc0159d530e60003220cd647151552b5132b2aef7c9be00dc6f73afc5901dde157aab131335baaa853b3a14555ee11fbddc0e49a9bab358a8941ad95ffdb48f42143e3a3d69dc66ba10737f531ed088954a9ec89d97480a22070a025208120155"
    37  
    38  	// ERC20
    39  	// EthAddr20 -> EthAddrContract4a, value 0
    40  	// ERC20 EthAddrContract4a: EthAddr20 -> EthAddr55, value 10000000000000000000000
    41  	EthTxidB1T2  = "a9cd088aba2131000da6f38a33c20169baee476218deea6b78720700b895b101"
    42  	EthTx2Packed = "08e8dd870210a6a6f0db051aa20108d001120509502f900018d5e1042a44a9059cbb000000000000000000000000555ee11fbddc0e49a9bab358a8941ad95ffdb48f00000000000000000000000000000000000000000000021e19e0c9bab24000003220a9cd088aba2131000da6f38a33c20169baee476218deea6b78720700b895b1013a144af4114f73d1c1c903ac9e0361b379d1291808a2421420cd153de35d469ba46127a0c8f18626b59a256a22a8010a02cb391201011a9e010a144af4114f73d1c1c903ac9e0361b379d1291808a2122000000000000000000000000000000000000000000000021e19e0c9bab24000001a20ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1a2000000000000000000000000020cd153de35d469ba46127a0c8f18626b59a256a1a20000000000000000000000000555ee11fbddc0e49a9bab358a8941ad95ffdb48f"
    43  
    44  	// non contract
    45  	// EthAddr55 -> EthAddr9f, value 4710537472325592
    46  	EthTxidB2T1  = "c2c3dd1ecb00e8a6d81f793d24387cf2947a313e94ab03b1fb22cd63320f6c91"
    47  	EthTx3Packed = "08e9dd870210d4b5f0db051a6708c20112050218711a001888a401220710bc3578bd37d83220c2c3dd1ecb00e8a6d81f793d24387cf2947a313e94ab03b1fb22cd63320f6c913a149f4981531fda132e83c44680787dfa7ee31e4f8d4214555ee11fbddc0e49a9bab358a8941ad95ffdb48f480722070a025208120101"
    48  
    49  	// ERC20
    50  	// EthAddr4b -> EthAddrContract47, value 0
    51  	// ERC20 EthAddrContract0d: EthAddr55 -> EthAddr4b, value 7675000000000000001
    52  	// ERC20 EthAddrContract4a: EthAddr4b -> EthAddr55, value 854307892726464
    53  	// ERC20 EthAddrContract4a: EthAddr7b -> EthAddr4b, value 871180000950184
    54  	// ERC20 EthAddrContract0d: EthAddr4b -> EthAddr7b, value 7674999999999991915
    55  	EthTxidB2T2  = "c92919ad24ffd58f760b18df7949f06e1190cf54a50a0e3745a385608ed3cbf2"
    56  	EthTx4Packed = "08e9dd870210d4b5f0db051aa50b08f6be0712043b9aca001890a10f2ac40a4f15078700000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000003c00000000000000000000000000000000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000000048000000000000000000000000000000000000000000000000000000000000004e00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000555ee11fbddc0e49a9bab358a8941ad95ffdb48f0000000000000000000000004bda106325c335df99eab7fe363cac8a0ba2a24d0000000000000000000000000d0f936ee4c93e25944694d6c121de94d9760f110000000000000000000000004af4114f73d1c1c903ac9e0361b379d1291808a200000000000000000000000000000000000000000000000000000000000000000000000000000000000000007b62eb7fe80350dc7ec945c0b73242cb9877fb1b0000000000000000000000004bda106325c335df99eab7fe363cac8a0ba2a24d0000000000000000000000004af4114f73d1c1c903ac9e0361b379d1291808a20000000000000000000000000d0f936ee4c93e25944694d6c121de94d9760f110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000a5ef5a7656bfb0000000000000000000000000000000000000000000000000000004ba78398d5c5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000166cfe0b9579b4ecf7a2801880f644009a324671a79754ea57c3a103c6e70d3dbef6ba69a08000000000000000000000000000000000000000000000000004f937d86afb90000000000000000000000000000000000000000000000000ab280fd8037d500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000166cfb784b7c1f3fbe8b75484603ab8adc58aaee3a46245a6579fac7077b5570018b4e0d4eb0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000308fd0e798ac00000000000000000000000000000000000000000000000006a8313d60b1f606b0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001b000000000000000000000000000000000000000000000000000000000000001b00000000000000000000000000000000000000000000000000000000000000029de0ccec59e8948e3d905b40e5542335ebc1eb4674db517d2f6392ec7fdeb3d45f3449d313ee2589819c6c79eb1c1b047adae68565c1608e3a1d1d70823febb0000000000000000000000000000000000000000000000000000000000000000234d06fe17f1202e8b07177a30eb64d14adc08cdb3fa1b3e3e0bea0f9672c02175b77c01c51d3c7e460723b27ecbc7801fd6482559a8c9999593f9a4d149c73843220c92919ad24ffd58f760b18df7949f06e1190cf54a50a0e3745a385608ed3cbf23a14479cc461fecd078f766ecc58533d6f69580cf3ac42144bda106325c335df99eab7fe363cac8a0ba2a24d482422d40b0a03034d301201011a9e010a140d0f936ee4c93e25944694d6c121de94d9760f1112200000000000000000000000000000000000000000000000006a8313d60b1f80011a20ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1a20000000000000000000000000555ee11fbddc0e49a9bab358a8941ad95ffdb48f1a200000000000000000000000004bda106325c335df99eab7fe363cac8a0ba2a24d1a9e010a144af4114f73d1c1c903ac9e0361b379d1291808a21220000000000000000000000000000000000000000000000000000308fd0e798ac01a20ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1a200000000000000000000000004bda106325c335df99eab7fe363cac8a0ba2a24d1a20000000000000000000000000555ee11fbddc0e49a9bab358a8941ad95ffdb48f1aa1030a14479cc461fecd078f766ecc58533d6f69580cf3ac1280020000000000000000000000004bda106325c335df99eab7fe363cac8a0ba2a24d0000000000000000000000000d0f936ee4c93e25944694d6c121de94d9760f110000000000000000000000004af4114f73d1c1c903ac9e0361b379d1291808a20000000000000000000000000000000000000000000000006a8313d60b1f8001000000000000000000000000000000000000000000000000000308fd0e798ac0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005e083a16f4b092c5729a49f9c3ed3cc171bb3d3d0c22e20b1de6063c32f399ac1a200d0b9391970d9a25552f37d436d2aae2925e2bfe1b2a923754bada030c498cb31a20000000000000000000000000555ee11fbddc0e49a9bab358a8941ad95ffdb48f1a2000000000000000000000000000000000000000000000000000000000000000001a205af266c0a89a07c1917deaa024414577e6c3c31c8907d079e13eb448c082594f1a9e010a144af4114f73d1c1c903ac9e0361b379d1291808a2122000000000000000000000000000000000000000000000000000031855667df7a81a20ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1a200000000000000000000000007b62eb7fe80350dc7ec945c0b73242cb9877fb1b1a200000000000000000000000004bda106325c335df99eab7fe363cac8a0ba2a24d1a9e010a140d0f936ee4c93e25944694d6c121de94d9760f1112200000000000000000000000000000000000000000000000006a8313d60b1f606b1a20ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1a200000000000000000000000004bda106325c335df99eab7fe363cac8a0ba2a24d1a200000000000000000000000007b62eb7fe80350dc7ec945c0b73242cb9877fb1b1aa1030a14479cc461fecd078f766ecc58533d6f69580cf3ac1280020000000000000000000000004bda106325c335df99eab7fe363cac8a0ba2a24d0000000000000000000000004af4114f73d1c1c903ac9e0361b379d1291808a20000000000000000000000000d0f936ee4c93e25944694d6c121de94d9760f1100000000000000000000000000000000000000000000000000031855667df7a80000000000000000000000000000000000000000000000006a8313d60b1f606b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f2b0d62c44ed08f2a5adef40c875d20310a42a9d4f488bd26323256fe01c7f481a200d0b9391970d9a25552f37d436d2aae2925e2bfe1b2a923754bada030c498cb31a200000000000000000000000007b62eb7fe80350dc7ec945c0b73242cb9877fb1b1a2000000000000000000000000000000000000000000000000000000000000000001a20b0b69dad58df6032c3b266e19b1045b19c87acd2c06fb0c598090f44b8e263aa"
    57  
    58  	// ERC721
    59  	// EthAddr83 -> EthAddrContractCd, value 0
    60  	// ERC721 EthAddrContractCd: EthAddr83 -> EthAddr7b, value 1
    61  	EthTxidB2T3  = "ca7628be5c80cda77163729ec63d218ee868a399d827a4682a478c6f48a6e22a"
    62  	EthTx5Packed = "089ff7cc05109eaecd8e061ac2010802120459682f0718a9e7052a6423b872dd000000000000000000000000837e3f699d85a4b0b99894567e9233dfb1dcb0810000000000000000000000007b62eb7fe80350dc7ec945c0b73242cb9877fb1b00000000000000000000000000000000000000000000000000000000000000013220ca7628be5c80cda77163729ec63d218ee868a399d827a4682a478c6f48a6e22a3a14cda9fc258358ecaa88845f19af595e908bb7efe94214837e3f699d85a4b0b99894567e9233dfb1dcb081480122c9020a02e5061201011a9e010a14cda9fc258358ecaa88845f19af595e908bb7efe91a208c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9251a20000000000000000000000000837e3f699d85a4b0b99894567e9233dfb1dcb0811a2000000000000000000000000000000000000000000000000000000000000000001a2000000000000000000000000000000000000000000000000000000000000000011a9e010a14cda9fc258358ecaa88845f19af595e908bb7efe91a20ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1a20000000000000000000000000837e3f699d85a4b0b99894567e9233dfb1dcb0811a200000000000000000000000007b62eb7fe80350dc7ec945c0b73242cb9877fb1b1a200000000000000000000000000000000000000000000000000000000000000001"
    63  
    64  	// ERC1155 TransferSingle
    65  	// EthAddr3e -> EthAddr92, value 100000000000000000
    66  	// ERC1155 EthAddrContract6f: EthAddrA3 -> EthAddr3e, values [(150,1)]
    67  	EthTxidB2T4  = "463a2a3f6303f88aec60fe7859081f80e8845b39495969a819c6bae9283aa12a"
    68  	EthTx6Packed = "08d2a6c80510ccfe8c8e061aad0108c1021204595faa4318f2dd0f2208016345785d8a00002a44d9bdda70000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000013220463a2a3f6303f88aec60fe7859081f80e8845b39495969a819c6bae9283aa12a3a149248a6048a58db9f0212dc7cd85ee8741128be7242143e3a3d69dc66ba10737f531ed088954a9ec89d97480822e7050a0302120d1201011abb020a146fd712e3a5b556654044608f9129040a4839e36c128002000000000000000000000000a3950b823cb063dd9afc0d27f35008b805b3ed530000000000000000000000003e3a3d69dc66ba10737f531ed088954a9ec89d97000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000096000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000011a205f9832c7244497a64c11c4a4f7597934bdf02b0361c54ad8e90091c2ce1f9e3c1ae0010a146fd712e3a5b556654044608f9129040a4839e36c1240000000000000000000000000000000000000000000000000000000000000009600000000000000000000000000000000000000000000000000000000000000011a20c3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f621a200000000000000000000000009248a6048a58db9f0212dc7cd85ee8741128be721a20000000000000000000000000a3950b823cb063dd9afc0d27f35008b805b3ed531a200000000000000000000000003e3a3d69dc66ba10737f531ed088954a9ec89d971abb010a149248a6048a58db9f0212dc7cd85ee8741128be721280010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000a3950b823cb063dd9afc0d27f35008b805b3ed530000000000000000000000003e3a3d69dc66ba10737f531ed088954a9ec89d9700000000000000000000000000000000000000000000000000000000000000011a200b7bef9468bee71526deef3cbbded0ec1a0aa3d5a3e81eaffb0e758552b33199"
    69  
    70  	// ERC1155 TransferBatch
    71  	// EthAddr5d -> EthAddrContract6f, value 0
    72  	// ERC1155 EthAddrContract6f: EthAddrZero -> EthAddr5d, values [(1776,1),(1898,10)]
    73  	EthTxidB2T5  = "6942c79c04ae981a2d194deb0ae5ae5e9d5d7a90fd9f52246b162fa645155e3a"
    74  	EthTx7Packed = "08a6c7d504108bb88f82061ae103085612044235839b18fbbf042a8403786279190000000000000000000000005dc6288b35e0807a3d6feb89b3a2ff4ab773168e000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000006f0000000000000000000000000000000000000000000000000000000000000076a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000001010000000000000000000000000000000000000000000000000000000000000032206942c79c04ae981a2d194deb0ae5ae5e9d5d7a90fd9f52246b162fa645155e3a3a146fd712e3a5b556654044608f9129040a4839e36c42145dc6288b35e0807a3d6feb89b3a2ff4ab773168e22ac030a03011ffb1201011aa1030a146fd712e3a5b556654044608f9129040a4839e36c128002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000006f0000000000000000000000000000000000000000000000000000000000000076a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000a1a204a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb1a200000000000000000000000005dc6288b35e0807a3d6feb89b3a2ff4ab773168e1a2000000000000000000000000000000000000000000000000000000000000000001a200000000000000000000000005dc6288b35e0807a3d6feb89b3a2ff4ab773168e"
    75  
    76  	// ERC20 - special (not realistic) tx, all transfers from the same address to the same address
    77  	// EthAddr55 -> EthAddr55, value 0
    78  	// ERC20 EthAddr55: EthAddr55 -> EthAddr55, value 10000000000000000000000
    79  	EthTxidB2T6  = "e71e0d1dc1ac58b7a0c9fb14d0693af0764df07a72d882fffc020e464c91b63c"
    80  	EthTx8Packed = "08e8dd870210a6a6f0db051aa20108d001120509502f900018d5e1042a44a9059cbb000000000000000000000000555ee11fbddc0e49a9bab358a8941ad95ffdb48f00000000000000000000000000000000000000000000021e19e0c9bab24000003220e71e0d1dc1ac58b7a0c9fb14d0693af0764df07a72d882fffc020e464c91b63c3a14555ee11fbddc0e49a9bab358a8941ad95ffdb48f4214555ee11fbddc0e49a9bab358a8941ad95ffdb48f22a8010a02cb391201011a9e010a14555ee11fbddc0e49a9bab358a8941ad95ffdb48f122000000000000000000000000000000000000000000000021e19e0c9bab24000001a20ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1a20000000000000000000000000555ee11fbddc0e49a9bab358a8941ad95ffdb48f1a20000000000000000000000000555ee11fbddc0e49a9bab358a8941ad95ffdb48f"
    81  )
    82  
    83  var EthTx2InternalData = &bchain.EthereumInternalData{
    84  	Transfers: []bchain.EthereumInternalTransfer{
    85  		{
    86  			Type:  bchain.CREATE,
    87  			From:  EthAddr9f,
    88  			To:    EthAddrContract4a,
    89  			Value: *big.NewInt(1000000),
    90  		},
    91  		{
    92  			Type:  bchain.CALL,
    93  			From:  EthAddr3e,
    94  			To:    EthAddr9f,
    95  			Value: *big.NewInt(1000001),
    96  		},
    97  		{
    98  			Type:  bchain.CALL,
    99  			From:  EthAddr3e,
   100  			To:    EthAddr3e,
   101  			Value: *big.NewInt(1000002),
   102  		},
   103  	},
   104  }
   105  
   106  var EthTx3InternalData = &bchain.EthereumInternalData{
   107  	Type:      bchain.CALL,
   108  	Transfers: []bchain.EthereumInternalTransfer{},
   109  	Error:     "\x01Something wrong",
   110  }
   111  
   112  var EthTx4InternalData = &bchain.EthereumInternalData{
   113  	Type:     bchain.CREATE,
   114  	Contract: EthAddrContract0d,
   115  	Transfers: []bchain.EthereumInternalTransfer{
   116  		{
   117  			Type:  bchain.CALL,
   118  			From:  EthAddr4b,
   119  			To:    EthAddr9f,
   120  			Value: *big.NewInt(1000010),
   121  		},
   122  		{
   123  			Type:  bchain.SELFDESTRUCT,
   124  			From:  EthAddrContract4a,
   125  			To:    EthAddr9f,
   126  			Value: *big.NewInt(1000011),
   127  		},
   128  	},
   129  }
   130  
   131  var Block1SpecificData = &bchain.EthereumBlockSpecificData{
   132  	Contracts: []bchain.ContractInfo{
   133  		{
   134  			Contract:       EthAddrContract4a,
   135  			Type:           bchain.ERC20TokenType,
   136  			Name:           "Contract 74",
   137  			Symbol:         "S74",
   138  			Decimals:       12,
   139  			CreatedInBlock: 44444,
   140  		},
   141  	},
   142  }
   143  
   144  var Block2SpecificData = &bchain.EthereumBlockSpecificData{
   145  	InternalDataError: "test error",
   146  	AddressAliasRecords: []bchain.AddressAliasRecord{
   147  		{
   148  			Address: EthAddr7bEIP55,
   149  			Name:    "address7b",
   150  		},
   151  		{
   152  			Address: EthAddr20EIP55,
   153  			Name:    "address20",
   154  		},
   155  	},
   156  	Contracts: []bchain.ContractInfo{
   157  		{
   158  			Contract:          EthAddrContract4a,
   159  			DestructedInBlock: 44445,
   160  		},
   161  	},
   162  }
   163  
   164  type packedAndInternal struct {
   165  	packed   string
   166  	internal *bchain.EthereumInternalData
   167  }
   168  
   169  func unpackTxs(packed []packedAndInternal, parser bchain.BlockChainParser) []bchain.Tx {
   170  	r := make([]bchain.Tx, len(packed))
   171  	for i, p := range packed {
   172  		b, err := hex.DecodeString(p.packed)
   173  		if err != nil {
   174  			panic(err)
   175  		}
   176  		tx, _, err := parser.UnpackTx(b)
   177  		if err != nil {
   178  			panic(err)
   179  		}
   180  		c, _ := tx.CoinSpecificData.(bchain.EthereumSpecificData)
   181  		c.InternalData = p.internal
   182  		tx.CoinSpecificData = c
   183  		r[i] = *tx
   184  	}
   185  	return r
   186  }
   187  
   188  // GetTestEthereumTypeBlock1 returns block #1
   189  func GetTestEthereumTypeBlock1(parser bchain.BlockChainParser) *bchain.Block {
   190  	return &bchain.Block{
   191  		BlockHeader: bchain.BlockHeader{
   192  			Height:        4321000,
   193  			Hash:          "0xc7b98df95acfd11c51ba25611a39e004fe56c8fdfc1582af99354fcd09c17b11",
   194  			Size:          31839,
   195  			Time:          1534858022,
   196  			Confirmations: 2,
   197  		},
   198  		Txs: unpackTxs([]packedAndInternal{{
   199  			packed: EthTx1Packed,
   200  		}, {
   201  			packed:   EthTx2Packed,
   202  			internal: EthTx2InternalData,
   203  		}}, parser),
   204  		CoinSpecificData: Block1SpecificData,
   205  	}
   206  }
   207  
   208  // GetTestEthereumTypeBlock2 returns block #2
   209  func GetTestEthereumTypeBlock2(parser bchain.BlockChainParser) *bchain.Block {
   210  	return &bchain.Block{
   211  		BlockHeader: bchain.BlockHeader{
   212  			Height:        4321001,
   213  			Hash:          "0x2b57e15e93a0ed197417a34c2498b7187df79099572c04a6b6e6ff418f74e6ee",
   214  			Size:          2345678,
   215  			Time:          1534859988,
   216  			Confirmations: 1,
   217  		},
   218  		Txs: unpackTxs([]packedAndInternal{{
   219  			packed:   EthTx3Packed,
   220  			internal: EthTx3InternalData,
   221  		}, {
   222  			packed:   EthTx4Packed,
   223  			internal: EthTx4InternalData,
   224  		}, {
   225  			packed: EthTx5Packed,
   226  		}, {
   227  			packed: EthTx6Packed,
   228  		}, {
   229  			packed: EthTx7Packed,
   230  		}, {
   231  			packed: EthTx8Packed,
   232  		}}, parser),
   233  		CoinSpecificData: Block2SpecificData,
   234  	}
   235  }