decred.org/dcrdex@v1.0.5/server/asset/firo/firo_test.go (about) 1 //go:build !firolive 2 3 package firo 4 5 import ( 6 "encoding/hex" 7 "testing" 8 9 "decred.org/dcrdex/dex" 10 ) 11 12 var ( 13 regtestNoAlgoBlock, _ = hex.DecodeString( 14 "01000030941ebce22649170c39611357e5c5cbc715b6a4a8ffc19f7efd0ad839abbb26" + 15 "55fd11d087ba44d9f1e5fe1558b705ca1ac300b550c0a5b9f22e9f4c13c20a4ee62e0c" + 16 "ea64ffff7f200000000001010000000100000000000000000000000000000000000000" + 17 "00000000000000000000000000ffffffff050260010101ffffffff0600cb4c00010000" + 18 "001976a914785c1c768cc6161bbfe9d00a51ba40221e84c5b088ac00e1f50500000000" + 19 "1976a914296134d2415bf1f2b518b3f673816d7e603b160088ac00e1f5050000000019" + 20 "76a914e1e1dc06a889c1b6d3eb00eef7a96f6a7cfb884888ac00e1f505000000001976" + 21 "a914ab03ecfddee6330497be894d16c29ae341c123aa88ac00a3e111000000001976a9" + 22 "144281a58a1d5b2d3285e00cb45a8492debbdad4c588ac00e1f505000000001976a914" + 23 "1fd264c0bb53bd9fef18e2248ddf1383d6e811ae88ac00000000", 24 ) 25 // block 29_000 26 testnetMTPBlock, _ = hex.DecodeString( 27 "00100020f7c22ae9fcb01a1f985435b671a074fd90d8f47a635a33b141a2463d483380" + 28 "e3120a77bb0dd29f81195dfbae6a6c891f6296f7b3fc3595c0a6459a9a9d2afd6543ef" + 29 "83605a54031f4511000000100000eea5f091d764a4ed653c4115cd3fb22be46b7a7059" + 30 "ffc528443fd29bd1510200000000000000000000000000000000000000000000000000" + 31 "0000000000000000000000000000000000000000000000000000000000000000000000" + 32 "0000000000000000000000000000000000000000000103000500010000000000000000" + 33 "000000000000000000000000000000000000000000000000ffffffff050248710101ff" + 34 "ffffff0340be402500000000232102d15462d90b9bda92843342008b1a8badecbacbe2" + 35 "f40c56e0316f5be4e1575a8cace0052d0b000000001976a914cfae8d3625968ac3230b" + 36 "500a274669937627de4c88ac60b8131a000000001976a91466e5d30df1c81c80115a4c" + 37 "217f63b42c407274a288ac00000000460200487100000a34e4cdee8b6da853ad822ab7" + 38 "dffb8b0a48e9ea13d7a15a78f92acf209b2e27516d3ac82406daa19869646438b7a794" + 39 "b28b83cef27e2cea1625b55c81c733e1", 40 ) 41 // block 49_999 42 // This block purposely has two outputs so that we are testing that we are 43 // properly handling vExtraData at the end of transaction 0. If we were not 44 // handling vExtraData correctly, transaction 1 would not parse. 45 testnetProgPOWBlock, _ = hex.DecodeString( 46 "001000205563b46ee309fc965da0b84dbee54dbad12948ffcdf33a618cff54b9073a59" + 47 "f87e11a8b427e46190a9a63f8de85fe97762ba65e024e5a371010726388b3bd3ce9ab2" + 48 "5261c750271c4fc300004d3945540080a04f1bbeffb1890956c41454c844b02f6cbc25" + 49 "ebef986ce15b5b8f007dc70ea940e80203000500010000000000000000000000000000" + 50 "000000000000000000000000000000000000ffffffff1b034fc30000000000049ab252" + 51 "61024fa00a2f4d696e74506f6e642fffffffff0340be4025000000001976a91420e7c4" + 52 "6d8b6678a5c1789e2d13b046a19060640288ac60b8131a000000001976a91466e5d30d" + 53 "f1c81c80115a4c217f63b42c407274a288ace0052d0b000000001976a914cfae8d3625" + 54 "968ac3230b500a274669937627de4c88ac000000004602004fc300001d0dfd4c026fb4" + 55 "907e090386bfc1faf738dff87c825c1495cdd789fe27285d8ecca4fad477f3e165e35b" + 56 "faac65779f45bb25a9e9b63c927036b883a11f96573303000600000000000000fd4901" + 57 "01004fc300000100016f0ddcfbb8ef363fee4e09a2d56dccd690b46f486e9986a54c3c" + 58 "c2d700bb24b63200000000000000320000000000000000000000000000000000000000" + 59 "0000000000000000000000000000000000000000000000000000000000000000000000" + 60 "0000000000000000000000000000000000000000000000000000000000000000000000" + 61 "0000000000000000000000000000000000000000000000000000000000000000000000" + 62 "0000000000000000000000000000000000000000000000000000000000000000000000" + 63 "0000000000000000000000000000000000000000000000000000000000000000000000" + 64 "0000000000000000000000000000000000000000000000000000000000000000000000" + 65 "0000000000000000000000000000000000000000000000000000000000000000000000" + 66 "0000000000000000000000000000", 67 ) 68 // Zeroth output of coinbase tx on testnet seems to be constanst. 69 testnetValue00 int64 = 625000000 70 noAlgoValue00 int64 = 4300000000 71 ) 72 73 func TestDeserializeFiroBlock(t *testing.T) { 74 // blockB, _ := hex.DecodeString("0010002043b5f66819ee245908141baefdac2dbdcd806ac250561ffff97ffda4ddf3cfce592af0eae16251b447ce5f57d61615d231b362db44138a8875ba799736e9a3e8ae512262ffff00208038010062020000000000007c92c3ff1ce62bdfdf727a56f5811a810a61a4d3be12260044e00532fe636aac0103000500010000000000000000000000000000000000000000000000000000000000000000ffffffff06038038010101ffffffff0340be4025000000001976a914eeb6d4eca74d16d4a24d97b70c4aada73bf6ce8388ace0052d0b000000001976a914cfae8d3625968ac3230b500a274669937627de4c88ac60b8131a000000001976a914839c8366952ac0acfa3c443692ea7d1b9251aeb388ac0000000046020080380100f19a7535df1c311432c54abf03715c6e18470bd0a0b9c1d30af595a68e966b44d920ea21c0b34a06c68ccba686855bfc020050efc368d6e7102fa0d2ba2b894d") 75 for _, test := range []*struct { 76 name string 77 serializedBlock []byte 78 coinbaseValue0 int64 79 net dex.Network 80 }{ 81 {"regtest - No algo", regtestNoAlgoBlock, noAlgoValue00, dex.Regtest}, 82 {"testnet - MTP", testnetMTPBlock, testnetValue00, dex.Testnet}, 83 {"testnet - ProgPOW", testnetProgPOWBlock, testnetValue00, dex.Testnet}, 84 } { 85 t.Run(test.name, func(t *testing.T) { 86 if blk, err := deserializeFiroBlock(test.serializedBlock, test.net); err != nil { 87 t.Fatalf("deserializeFiroBlock error: %v", err) 88 } else { 89 if len(blk.Transactions) == 0 { 90 t.Fatal("no transactions") 91 } 92 cbTx := blk.Transactions[0] 93 if len(cbTx.TxOut) == 0 { 94 t.Fatalf("no txouts") 95 } 96 txOut := cbTx.TxOut[0] 97 if txOut.Value != test.coinbaseValue0 { 98 t.Fatalf("wrong value for zeroth output of coinbase tx: wanted %d, got %d", test.coinbaseValue0, txOut.Value) 99 } 100 } 101 }) 102 } 103 }