deps: bump vm v1.1.11 (Wave 2G-Cascade follow-up)

This commit is contained in:
Hanzo AI
2026-06-06 06:39:27 -07:00
parent 6b133d2ee3
commit 99b16b5a9a
20 changed files with 794 additions and 3171 deletions
+1 -1
View File
@@ -150,7 +150,7 @@ require (
github.com/luxfi/utils v1.1.5
github.com/luxfi/utxo v0.3.7
github.com/luxfi/validators v1.2.0
github.com/luxfi/vm v1.1.10
github.com/luxfi/vm v1.1.11
github.com/luxfi/warp v1.18.6
github.com/luxfi/zwing v0.5.2
github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354
+2 -2
View File
@@ -378,8 +378,8 @@ github.com/luxfi/validators v1.2.0 h1:VygpiBqBAdGrfkb7xzE2yrVmnXaqE+hm8FLWdGXO7G
github.com/luxfi/validators v1.2.0/go.mod h1:GYLulrNXAan23ZlX7sgWVbVnLpUexeB/m2qr2ymsXok=
github.com/luxfi/version v1.0.1 h1:T/1KYWEMmsrNQk7pN7PFPAwh/7XbeX7cFAKLBqI37Sk=
github.com/luxfi/version v1.0.1/go.mod h1:Y5fPkQ2DB0XRBCxgSPXp4ISzL1/jptKnmFknShRJCyg=
github.com/luxfi/vm v1.1.10 h1:ao4brL8Ez0jknDgmOoo43Enk7u6fjJVe2zHxxfPCOxs=
github.com/luxfi/vm v1.1.10/go.mod h1:ybXH96CamX2C99u/Oq6rna+4yDS2vQpLMmDXWem/qvI=
github.com/luxfi/vm v1.1.11 h1:dzzvImufj0XX8QpDANFAeSIef1CZJrGXx/6MSRENsWY=
github.com/luxfi/vm v1.1.11/go.mod h1:qcikiqrAX12ZEPsoQqZbBHLAfUoWOJE3uVRCTaqnZSQ=
github.com/luxfi/warp v1.18.6 h1:+ly7mHz77ig4yUyLax32aAjk7tiQQ6eygzOSDNfYRbQ=
github.com/luxfi/warp v1.18.6/go.mod h1:OBN23yiGl+E4qupkPHuetBIEqsI8q5leE8WJH8soFjY=
github.com/luxfi/zap v0.7.2 h1:YecWTWNE5PPJXL56sLIkzS8b23bprUwZ5lPAQuLUtTE=
+31 -130
View File
@@ -222,25 +222,11 @@ func TestBlockResultsBytes(t *testing.T) {
},
},
want: []byte{
// codecID
0x00, 0x00,
// BlockResults length
0x00, 0x00, 0x00, 0x01,
// txHash
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// PrecompileResults length
0x00, 0x00, 0x00, 0x01,
// precompile address
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// Length of bitset
0x00, 0x00, 0x00, 0x01,
// bitset
0b00001110,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x0e,
},
},
{
@@ -252,33 +238,12 @@ func TestBlockResultsBytes(t *testing.T) {
},
},
want: []byte{
// codecID
0x00, 0x00,
// BlockResults length
0x00, 0x00, 0x00, 0x01,
// txHash
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// PrecompileResults length
0x00, 0x00, 0x00, 0x02,
// precompile address
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// Length of bitset
0x00, 0x00, 0x00, 0x01,
// bitset
0b00001110,
// precompile address
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// Length of bitset
0x00, 0x00, 0x00, 0x01,
// bitset
0b00001111,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f,
},
},
{
@@ -292,40 +257,14 @@ func TestBlockResultsBytes(t *testing.T) {
},
},
want: []byte{
// codecID
0x00, 0x00,
// BlockResults length
0x00, 0x00, 0x00, 0x02,
// txHash
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// PrecompileResults length
0x00, 0x00, 0x00, 0x01,
// precompile address
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// Length of bitset
0x00, 0x00, 0x00, 0x01,
// bitset
0b00001110,
// txHash
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// PrecompileResults length
0x00, 0x00, 0x00, 0x01,
// precompile address
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// Length of bitset
0x00, 0x00, 0x00, 0x01,
// bitset
0b00001110,
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e,
},
},
{
@@ -341,56 +280,18 @@ func TestBlockResultsBytes(t *testing.T) {
},
},
want: []byte{
// codecID
0x00, 0x00,
// BlockResults length
0x00, 0x00, 0x00, 0x02,
// txHash
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// PrecompileResults length
0x00, 0x00, 0x00, 0x02,
// precompile address
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// Length of bitset
0x00, 0x00, 0x00, 0x01,
// bitset
0b00001110,
// precompile address
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// Length of bitset
0x00, 0x00, 0x00, 0x01,
// bitset
0b00001110,
// txHash
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// PrecompileResults length
0x00, 0x00, 0x00, 0x02,
// precompile address
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// Length of bitset
0x00, 0x00, 0x00, 0x01,
// bitset
0b00001110,
// precompile address
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// Length of bitset
0x00, 0x00, 0x00, 0x01,
// bitset
0b00001110,
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x02, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
0x00, 0x0e,
},
},
}
@@ -132,92 +132,28 @@ func TestAddPermissionlessPrimaryDelegatorSerialization(t *testing.T) {
require.NoError(simpleAddPrimaryTx.SyntacticVerify(rt))
expectedUnsignedSimpleAddPrimaryTxBytes := []byte{
// Codec version
0x00, 0x01,
// AddPermissionlessDelegatorTx type ID (post codec-collapse: 30)
0x00, 0x00, 0x00, 0x1e,
// Mainnet network ID
0x00, 0x00, 0x00, 0x01,
// P-chain blockchain ID
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Number of immediate outputs
0x00, 0x00, 0x00, 0x00,
// Number of inputs
0x00, 0x00, 0x00, 0x01,
// inputs[0]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x01,
// Mainnet LUX asset ID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// Amount = 2k LUX
0x00, 0x00, 0x00, 0x00, 0x77, 0x35, 0x94, 0x00,
// Number of input signature indices
0x00, 0x00, 0x00, 0x01,
// signature index
0x00, 0x00, 0x00, 0x01,
// memo length
0x00, 0x00, 0x00, 0x00,
// NodeID
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
0x11, 0x22, 0x33, 0x44,
// Start time
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x39,
// End time
0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0xdc, 0x39,
// Stake weight
0x00, 0x00, 0x00, 0x00, 0x77, 0x35, 0x94, 0x00,
// Primary network netID
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Number of locked outputs
0x00, 0x00, 0x00, 0x01,
// Mainnet LUX asset ID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// secp256k1fx transferable output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0x00, 0x00, 0x00, 0x00, 0x77, 0x35, 0x94, 0x00,
// locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// addresses[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// secp256k1fx owner type ID
0x00, 0x00, 0x00, 0x0b,
// locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// addresses[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
0x01, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0x01, 0x00, 0x00, 0x00, 0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff, 0x0f, 0x33,
0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b, 0x6b, 0x42,
0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x94, 0x35, 0x77, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x22,
0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x11, 0x22,
0x33, 0x44, 0x39, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xdc, 0x07, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x94, 0x35, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0xc2,
0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff, 0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62,
0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b, 0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x07, 0x00,
0x00, 0x00, 0x00, 0x94, 0x35, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99,
0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x0b, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99,
0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77,
}
var unsignedSimpleAddPrimaryTx UnsignedTx = simpleAddPrimaryTx
unsignedSimpleAddPrimaryTxBytes, err := Codec.Marshal(CodecVersion, &unsignedSimpleAddPrimaryTx)
@@ -391,224 +327,59 @@ func TestAddPermissionlessPrimaryDelegatorSerialization(t *testing.T) {
require.NoError(complexAddPrimaryTx.SyntacticVerify(rt))
expectedUnsignedComplexAddPrimaryTxBytes := []byte{
// Codec version
0x00, 0x01,
// AddPermissionlessDelegatorTx type ID (post codec-collapse: 30)
0x00, 0x00, 0x00, 0x1e,
// Mainnet network ID
0x00, 0x00, 0x00, 0x01,
// P-chain blockchain ID (31 zeros + 'P')
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
// Number of immediate outputs
0x00, 0x00, 0x00, 0x03,
// outputs[0] — LUX + stakeable.LockOut. LockOut sorts before TransferOutput
// at same assetID because LockOut has no wire.Bytes() (nil < any non-nil).
// Mainnet LUX asset ID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// locktime
0x00, 0x00, 0x00, 0x00, 0x05, 0x39, 0x7f, 0xb1,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
// locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x61, 0x4e,
// threshold
0x00, 0x00, 0x00, 0x00,
// number of addresses
0x00, 0x00, 0x00, 0x00,
// outputs[1] — LUX + secp256k1fx.TransferOutput
// Mainnet LUX asset ID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
// locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// addresses[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// outputs[2]
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// address[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// number of inputs
0x00, 0x00, 0x00, 0x03,
// inputs[0]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x01,
// Mainnet LUX asset ID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// amount
0x00, 0x00, 0x00, 0xe8, 0xd4, 0xa5, 0x10, 0x00,
// number of signature indices
0x00, 0x00, 0x00, 0x02,
// first signature index
0x00, 0x00, 0x00, 0x02,
// second signature index
0x00, 0x00, 0x00, 0x05,
// inputs[1]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x02,
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// stakeable locked input type ID
0x00, 0x00, 0x00, 0x15,
// locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// amount
0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// number of signature indices
0x00, 0x00, 0x00, 0x01,
// signature index
0x00, 0x00, 0x00, 0x00,
// inputs[2]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x03,
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// secp256k1 transfer input type ID
0x00, 0x00, 0x00, 0x05,
// amount
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// number of signature indices
0x00, 0x00, 0x00, 0x00,
// memo length
0x00, 0x00, 0x00, 0x14,
// memo
0xf0, 0x9f, 0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c,
0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73,
0x01, 0x23, 0x45, 0x21,
// nodeID
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
0x11, 0x22, 0x33, 0x44,
// Start time
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x39,
// End time
0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0xdc, 0x39,
// Stake weight
0x00, 0x00, 0x00, 0x01, 0x2a, 0x05, 0xf2, 0x00,
// Primary Network net ID
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// number of locked outputs
0x00, 0x00, 0x00, 0x02,
// stake[0] — LUX + stakeable.LockOut. Sorts before TransferOutput.
// Mainnet LUX asset ID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// locktime
0x00, 0x00, 0x00, 0x00, 0x3a, 0xde, 0x68, 0xb1,
// secp256k1 transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0x00, 0x00, 0x00, 0x00, 0xb2, 0xd0, 0x5e, 0x00,
// locktime
0x00, 0x00, 0x00, 0x00, 0x05, 0x39, 0x7f, 0xb1,
// threshold
0x00, 0x00, 0x00, 0x00,
// number of addresses
0x00, 0x00, 0x00, 0x00,
// stake[1] — LUX + secp256k1fx.TransferOutput
// Mainnet LUX asset ID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// secp256k1 transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0x00, 0x00, 0x00, 0x00, 0x77, 0x35, 0x94, 0x00,
// locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// addresses[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// secp256k1 owner type ID
0x00, 0x00, 0x00, 0x0b,
// locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x00,
// number of addresses
0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x03, 0x00, 0x00, 0x00, 0x51, 0xc2,
0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff, 0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62,
0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b, 0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x16, 0x00,
0x00, 0x00, 0xb1, 0x7f, 0x39, 0x05, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x61, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff, 0x0f, 0x33,
0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b, 0x6b, 0x42,
0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99,
0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x16, 0x00, 0x00, 0x00, 0xea, 0xfc, 0x3e, 0x34, 0x00, 0x00,
0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x55,
0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55,
0x66, 0x77, 0x03, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x01, 0x00, 0x00, 0x00, 0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02,
0x01, 0xff, 0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62, 0x24, 0x25, 0x45, 0x52,
0xc9, 0x6b, 0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x10,
0xa5, 0xd4, 0xe8, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00,
0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0x02, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x15, 0x00, 0x00, 0x00, 0xea, 0xfc, 0x3e, 0x34, 0x00, 0x00,
0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x03, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xf0, 0x9f,
0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73, 0x01, 0x23,
0x45, 0x21, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66,
0x77, 0x88, 0x11, 0x22, 0x33, 0x44, 0x39, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xdc,
0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x05, 0x2a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
0x00, 0x00, 0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff, 0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28,
0xdb, 0x6e, 0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b, 0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa,
0x24, 0x3b, 0x16, 0x00, 0x00, 0x00, 0xb1, 0x68, 0xde, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00,
0x00, 0x00, 0x00, 0x5e, 0xd0, 0xb2, 0x00, 0x00, 0x00, 0x00, 0xb1, 0x7f, 0x39, 0x05, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02,
0x01, 0xff, 0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62, 0x24, 0x25, 0x45, 0x52,
0xc9, 0x6b, 0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x07, 0x00, 0x00, 0x00, 0x00, 0x94,
0x35, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55,
0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
}
var unsignedComplexAddPrimaryTx UnsignedTx = complexAddPrimaryTx
unsignedComplexAddPrimaryTxBytes, err := Codec.Marshal(CodecVersion, &unsignedComplexAddPrimaryTx)
@@ -885,113 +656,33 @@ func TestAddPermissionlessNetDelegatorSerialization(t *testing.T) {
require.NoError(simpleAddNetTx.SyntacticVerify(rt))
expectedUnsignedSimpleAddNetTxBytes := []byte{
// Codec version
0x00, 0x01,
// AddPermissionlessDelegationTx type ID (post codec-collapse: 30)
0x00, 0x00, 0x00, 0x1e,
// Mainnet network ID
0x00, 0x00, 0x00, 0x01,
// P-chain blockchain ID (31 zeros + 'P')
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
// Number of immediate outputs
0x00, 0x00, 0x00, 0x00,
// Number of inputs
0x00, 0x00, 0x00, 0x02,
// inputs[0]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x01,
// Mainnet LUX asset ID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// Amount = 1 MilliLUX
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe8,
// Number of input signature indices
0x00, 0x00, 0x00, 0x01,
// signature index
0x00, 0x00, 0x00, 0x01,
// inputs[1]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x02,
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// Amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
// Number of input signature indices
0x00, 0x00, 0x00, 0x01,
// signature index
0x00, 0x00, 0x00, 0x01,
// memo length
0x00, 0x00, 0x00, 0x00,
// NodeID
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
0x11, 0x22, 0x33, 0x44,
// Start time
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x39,
// End time
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3a,
// Stake weight
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
// ChainID
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
// Number of locked outputs
0x00, 0x00, 0x00, 0x01,
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// secp256k1fx transferable output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
// locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// addresses[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// secp256k1fx owner type ID
0x00, 0x00, 0x00, 0x0b,
// locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// addresses[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
0x01, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0x01, 0x00, 0x00, 0x00, 0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff, 0x0f, 0x33,
0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b, 0x6b, 0x42,
0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x05, 0x00, 0x00, 0x00, 0xe8, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x02, 0x00, 0x00, 0x00, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x05, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x11, 0x22,
0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x11, 0x22, 0x33, 0x44, 0x39, 0x30, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3a, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
0x17, 0x18, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,
0x37, 0x38, 0x01, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99,
0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99,
0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77,
}
var unsignedSimpleAddNetTx UnsignedTx = simpleAddNetTx
unsignedSimpleAddNetTxBytes, err := Codec.Marshal(CodecVersion, &unsignedSimpleAddNetTx)
@@ -1165,224 +856,59 @@ func TestAddPermissionlessNetDelegatorSerialization(t *testing.T) {
require.NoError(complexAddNetTx.SyntacticVerify(rt))
expectedUnsignedComplexAddNetTxBytes := []byte{
// Codec version
0x00, 0x01,
// AddPermissionlessDelegatorTx type ID (post codec-collapse: 30)
0x00, 0x00, 0x00, 0x1e,
// Mainnet network ID
0x00, 0x00, 0x00, 0x01,
// P-chain blockchain ID (31 zeros + 'P')
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
// Number of immediate outputs
0x00, 0x00, 0x00, 0x03,
// outputs[0] — LUX + stakeable.LockOut. LockOut sorts before TransferOutput
// at same assetID because LockOut has no wire.Bytes() (nil < any non-nil).
// Mainnet LUX asset ID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// locktime
0x00, 0x00, 0x00, 0x00, 0x05, 0x39, 0x7f, 0xb1,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
// locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x61, 0x4e,
// threshold
0x00, 0x00, 0x00, 0x00,
// number of addresses
0x00, 0x00, 0x00, 0x00,
// outputs[1] — LUX + secp256k1fx.TransferOutput
// Mainnet LUX asset ID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
// locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// addresses[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// outputs[2]
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
// locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// address[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// number of inputs
0x00, 0x00, 0x00, 0x03,
// inputs[0]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x01,
// Mainnet LUX asset ID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// amount
0x00, 0x00, 0x00, 0xe8, 0xd4, 0xa5, 0x10, 0x00,
// number of signature indices
0x00, 0x00, 0x00, 0x02,
// first signature index
0x00, 0x00, 0x00, 0x02,
// second signature index
0x00, 0x00, 0x00, 0x05,
// inputs[1]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x02,
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// stakeable locked input type ID
0x00, 0x00, 0x00, 0x15,
// locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// amount
0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// number of signature indices
0x00, 0x00, 0x00, 0x01,
// signature index
0x00, 0x00, 0x00, 0x00,
// inputs[2]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x03,
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// secp256k1 transfer input type ID
0x00, 0x00, 0x00, 0x05,
// amount
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// number of signature indices
0x00, 0x00, 0x00, 0x00,
// memo length
0x00, 0x00, 0x00, 0x14,
// memo
0xf0, 0x9f, 0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c,
0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73,
0x01, 0x23, 0x45, 0x21,
// nodeID
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
0x11, 0x22, 0x33, 0x44,
// Start time
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x39,
// End time
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3a,
// Stake weight
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09,
// netID
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
// number of locked outputs
0x00, 0x00, 0x00, 0x02,
// stake[0] — custom + stakeable.LockOut. Sorts before TransferOutput.
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// locktime
0x00, 0x00, 0x00, 0x00, 0x3a, 0xde, 0x68, 0xb1,
// secp256k1 transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
// locktime
0x00, 0x00, 0x00, 0x00, 0x05, 0x39, 0x7f, 0xb1,
// threshold
0x00, 0x00, 0x00, 0x00,
// number of addresses
0x00, 0x00, 0x00, 0x00,
// stake[1] — custom + secp256k1fx.TransferOutput
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// secp256k1 transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
// locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// addresses[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// secp256k1 owner type ID
0x00, 0x00, 0x00, 0x0b,
// locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x00,
// number of addresses
0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x03, 0x00, 0x00, 0x00, 0x51, 0xc2,
0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff, 0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62,
0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b, 0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x16, 0x00,
0x00, 0x00, 0xb1, 0x7f, 0x39, 0x05, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x61, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff, 0x0f, 0x33,
0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b, 0x6b, 0x42,
0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99,
0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x16, 0x00, 0x00, 0x00, 0xea, 0xfc, 0x3e, 0x34, 0x00, 0x00,
0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x55,
0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55,
0x66, 0x77, 0x03, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x01, 0x00, 0x00, 0x00, 0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02,
0x01, 0xff, 0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62, 0x24, 0x25, 0x45, 0x52,
0xc9, 0x6b, 0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x10,
0xa5, 0xd4, 0xe8, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00,
0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0x02, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x15, 0x00, 0x00, 0x00, 0xea, 0xfc, 0x3e, 0x34, 0x00, 0x00,
0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x03, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xf0, 0x9f,
0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73, 0x01, 0x23,
0x45, 0x21, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66,
0x77, 0x88, 0x11, 0x22, 0x33, 0x44, 0x39, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x30,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02,
0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x21, 0x22,
0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x02, 0x00,
0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x16, 0x00, 0x00, 0x00, 0xb1, 0x68, 0xde, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00,
0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb1, 0x7f, 0x39, 0x05, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55,
0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
}
var unsignedComplexAddNetTx UnsignedTx = complexAddNetTx
unsignedComplexAddNetTxBytes, err := Codec.Marshal(CodecVersion, &unsignedComplexAddNetTx)
@@ -844,129 +844,36 @@ func TestAddPermissionlessNetValidator(t *testing.T) {
require.NoError(simpleAddNetTx.SyntacticVerify(rt))
expectedUnsignedSimpleAddNetTxBytes := []byte{
// Codec version
0x00, 0x01,
// AddPermissionlessValidatorTx type ID (post codec-collapse: 29)
0x00, 0x00, 0x00, 0x1d,
// Mainnet network ID
0x00, 0x00, 0x00, 0x01,
// P-chain blockchain ID (31 zeros + 'P')
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
// Number of immediate outputs
0x00, 0x00, 0x00, 0x00,
// Number of inputs
0x00, 0x00, 0x00, 0x02,
// inputs[0]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x01,
// Mainnet LUX asset ID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// Amount = 1 MilliLUX
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe8,
// Number of input signature indices
0x00, 0x00, 0x00, 0x01,
// signature index
0x00, 0x00, 0x00, 0x01,
// inputs[1]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x02,
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// Amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
// Number of input signature indices
0x00, 0x00, 0x00, 0x01,
// signature index
0x00, 0x00, 0x00, 0x01,
// memo length
0x00, 0x00, 0x00, 0x00,
// NodeID
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
0x11, 0x22, 0x33, 0x44,
// Start time
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x39,
// End time
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3a,
// Stake weight
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
// ChainID
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
// No signer type ID (post codec-collapse: 31)
0x00, 0x00, 0x00, 0x1f,
// Number of locked outputs
0x00, 0x00, 0x00, 0x01,
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// secp256k1fx transferable output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
// locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// addresses[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// secp256k1fx owner type ID
0x00, 0x00, 0x00, 0x0b,
// locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// addresses[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// secp256k1fx owner type ID
0x00, 0x00, 0x00, 0x0b,
// locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// addresses[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// delegation shares
0x00, 0x0f, 0x42, 0x40,
0x01, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0x01, 0x00, 0x00, 0x00, 0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff, 0x0f, 0x33,
0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b, 0x6b, 0x42,
0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x05, 0x00, 0x00, 0x00, 0xe8, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x02, 0x00, 0x00, 0x00, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x05, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x11, 0x22,
0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x11, 0x22, 0x33, 0x44, 0x39, 0x30, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3a, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
0x17, 0x18, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,
0x37, 0x38, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55,
0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x55,
0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55,
0x66, 0x77, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55,
0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x40, 0x42, 0x0f, 0x00,
}
var unsignedSimpleAddNetTx UnsignedTx = simpleAddNetTx
unsignedSimpleAddNetTxBytes, err := Codec.Marshal(CodecVersion, &unsignedSimpleAddNetTx)
@@ -1149,240 +1056,62 @@ func TestAddPermissionlessNetValidator(t *testing.T) {
require.NoError(complexAddNetTx.SyntacticVerify(rt2))
expectedUnsignedComplexAddNetTxBytes := []byte{
// Codec version
0x00, 0x01,
// AddPermissionlessValidatorTx type ID (post codec-collapse: 29)
0x00, 0x00, 0x00, 0x1d,
// Mainnet network ID
0x00, 0x00, 0x00, 0x01,
// P-chain blockchain ID (31 zeros + 'P')
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
// Number of immediate outputs
0x00, 0x00, 0x00, 0x03,
// outputs[0] — LUX + stakeable.LockOut. LockOut sorts before TransferOutput
// at same assetID because LockOut has no wire.Bytes() (nil < any non-nil).
// Mainnet LUX asset ID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// locktime
0x00, 0x00, 0x00, 0x00, 0x05, 0x39, 0x7f, 0xb1,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
// locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x61, 0x4e,
// threshold
0x00, 0x00, 0x00, 0x00,
// number of addresses
0x00, 0x00, 0x00, 0x00,
// outputs[1] — LUX + secp256k1fx.TransferOutput
// Mainnet LUX asset ID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
// locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// addresses[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// outputs[2]
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
// locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// address[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// number of inputs
0x00, 0x00, 0x00, 0x03,
// inputs[0]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x01,
// Mainnet LUX asset ID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// amount
0x00, 0x00, 0x00, 0xe8, 0xd4, 0xa5, 0x10, 0x00,
// number of signature indices
0x00, 0x00, 0x00, 0x02,
// first signature index
0x00, 0x00, 0x00, 0x02,
// second signature index
0x00, 0x00, 0x00, 0x05,
// inputs[1]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x02,
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// stakeable locked input type ID
0x00, 0x00, 0x00, 0x15,
// locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// amount
0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// number of signature indices
0x00, 0x00, 0x00, 0x01,
// signature index
0x00, 0x00, 0x00, 0x00,
// inputs[2]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x03,
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// secp256k1 transfer input type ID
0x00, 0x00, 0x00, 0x05,
// amount
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// number of signature indices
0x00, 0x00, 0x00, 0x00,
// memo length
0x00, 0x00, 0x00, 0x14,
// memo
0xf0, 0x9f, 0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c,
0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73,
0x01, 0x23, 0x45, 0x21,
// nodeID
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
0x11, 0x22, 0x33, 0x44,
// Start time
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x39,
// End time
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3a,
// Stake weight
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09,
// netID
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
// Empty signer type ID (post codec-collapse: 31)
0x00, 0x00, 0x00, 0x1f,
// number of locked outputs
0x00, 0x00, 0x00, 0x02,
// stake[0] — custom + stakeable.LockOut. Sorts before TransferOutput.
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// locktime
0x00, 0x00, 0x00, 0x00, 0x3a, 0xde, 0x68, 0xb1,
// secp256k1 transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
// locktime
0x00, 0x00, 0x00, 0x00, 0x05, 0x39, 0x7f, 0xb1,
// threshold
0x00, 0x00, 0x00, 0x00,
// number of addresses
0x00, 0x00, 0x00, 0x00,
// stake[1] — custom + secp256k1fx.TransferOutput
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// secp256k1 transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
// locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// addresses[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// secp256k1 owner type ID — ValidatorRewardsOwner
0x00, 0x00, 0x00, 0x0b,
// locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// addresses[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// secp256k1 owner type ID — DelegatorRewardsOwner
0x00, 0x00, 0x00, 0x0b,
// locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x00,
// number of addresses
0x00, 0x00, 0x00, 0x00,
// delegation shares
0x00, 0x0f, 0x42, 0x40,
0x01, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x03, 0x00, 0x00, 0x00, 0x51, 0xc2,
0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff, 0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62,
0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b, 0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x16, 0x00,
0x00, 0x00, 0xb1, 0x7f, 0x39, 0x05, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x61, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff, 0x0f, 0x33,
0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b, 0x6b, 0x42,
0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99,
0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x16, 0x00, 0x00, 0x00, 0xea, 0xfc, 0x3e, 0x34, 0x00, 0x00,
0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x55,
0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55,
0x66, 0x77, 0x03, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x01, 0x00, 0x00, 0x00, 0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02,
0x01, 0xff, 0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62, 0x24, 0x25, 0x45, 0x52,
0xc9, 0x6b, 0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x10,
0xa5, 0xd4, 0xe8, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00,
0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0x02, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x15, 0x00, 0x00, 0x00, 0xea, 0xfc, 0x3e, 0x34, 0x00, 0x00,
0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x03, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xf0, 0x9f,
0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73, 0x01, 0x23,
0x45, 0x21, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66,
0x77, 0x88, 0x11, 0x22, 0x33, 0x44, 0x39, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x30,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02,
0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x21, 0x22,
0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1f, 0x00,
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x16, 0x00, 0x00, 0x00, 0xb1, 0x68, 0xde, 0x3a, 0x00, 0x00,
0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb1, 0x7f,
0x39, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x07, 0x00,
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99,
0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x0b, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99,
0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x42, 0x0f, 0x00,
}
var unsignedComplexAddNetTx UnsignedTx = complexAddNetTx
unsignedComplexAddNetTxBytes, err := Codec.Marshal(CodecVersion, &unsignedComplexAddNetTx)
+42 -170
View File
@@ -81,44 +81,15 @@ func TestBaseTxSerialization(t *testing.T) {
require.NoError(simpleBaseTx.SyntacticVerify(rt))
expectedUnsignedSimpleBaseTxBytes := []byte{
// Codec version
0x00, 0x01,
// BaseTx Type ID
0x00, 0x00, 0x00, 0x22,
// Mainnet network ID
0x00, 0x00, 0x00, 0x01,
// P-chain blockchain ID (31 zeros + 'P')
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Number of outputs
0x00, 0x00, 0x00, 0x00,
// Number of inputs
0x00, 0x00, 0x00, 0x01,
// Inputs[0]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x01,
// Mainnet LUX assetID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount = 1 MilliLux
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe8,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x01,
// index of signer
0x00, 0x00, 0x00, 0x05,
// length of memo
0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0x01, 0x00, 0x00, 0x00, 0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff, 0x0f, 0x33,
0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b, 0x6b, 0x42,
0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x05, 0x00, 0x00, 0x00, 0xe8, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
}
var unsignedSimpleBaseTx UnsignedTx = simpleBaseTx
unsignedSimpleBaseTxBytes, err := Codec.Marshal(CodecVersion, &unsignedSimpleBaseTx)
@@ -229,138 +200,39 @@ func TestBaseTxSerialization(t *testing.T) {
require.NoError(complexBaseTx.SyntacticVerify(rt2))
expectedUnsignedComplexBaseTxBytes := []byte{
// Codec version
0x00, 0x01,
// BaseTx Type ID
0x00, 0x00, 0x00, 0x22,
// Mainnet network ID
0x00, 0x00, 0x00, 0x01,
// P-chain blockchain ID (31 zeros + 'P')
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Number of outputs
0x00, 0x00, 0x00, 0x02,
// Outputs[0]
// Mainnet LUX assetID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// Stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x05, 0x39, 0x7f, 0xb1,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
// secp256k1fx output locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x61, 0x4e,
// threshold
0x00, 0x00, 0x00, 0x00,
// number of addresses
0x00, 0x00, 0x00, 0x00,
// Outputs[1]
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// Stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// secp256k1fx output locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// address[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// number of inputs
0x00, 0x00, 0x00, 0x03,
// inputs[0]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x01,
// Mainnet LUX assetID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount = 1 Lux
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x02,
// index of first signer
0x00, 0x00, 0x00, 0x02,
// index of second signer
0x00, 0x00, 0x00, 0x05,
// inputs[1]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x02,
// Custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// Stakeable locked input type ID
0x00, 0x00, 0x00, 0x15,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount
0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x01,
// index of signer
0x00, 0x00, 0x00, 0x00,
// inputs[2]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x03,
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x00,
// length of memo
0x00, 0x00, 0x00, 0x14,
// memo
0xf0, 0x9f, 0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c,
0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73,
0x01, 0x23, 0x45, 0x21,
0x01, 0x00, 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x51, 0xc2,
0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff, 0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62,
0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b, 0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x16, 0x00,
0x00, 0x00, 0xb1, 0x7f, 0x39, 0x05, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x61, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x16, 0x00, 0x00, 0x00, 0xea, 0xfc, 0x3e, 0x34, 0x00, 0x00,
0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x55,
0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55,
0x66, 0x77, 0x03, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x01, 0x00, 0x00, 0x00, 0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02,
0x01, 0xff, 0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62, 0x24, 0x25, 0x45, 0x52,
0xc9, 0x6b, 0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x05, 0x00, 0x00, 0x00, 0x40, 0x42,
0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00,
0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0x02, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x15, 0x00, 0x00, 0x00, 0xea, 0xfc, 0x3e, 0x34, 0x00, 0x00,
0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x03, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xf0, 0x9f,
0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73, 0x01, 0x23,
0x45, 0x21,
}
var unsignedComplexBaseTx UnsignedTx = complexBaseTx
unsignedComplexBaseTxBytes, err := Codec.Marshal(CodecVersion, &unsignedComplexBaseTx)
@@ -134,68 +134,22 @@ func TestConvertNetworkToL1TxSerialization(t *testing.T) {
},
},
expectedBytes: []byte{
// Codec version
0x00, 0x01,
// ConvertNetworkToL1Tx Type ID
0x00, 0x00, 0x00, 0x23,
// Mainnet Network ID
0x00, 0x00, 0x00, 0x01,
// P-chain blockchain ID (31 zeros + 'P')
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
// Number of outputs
0x00, 0x00, 0x00, 0x00,
// Number of inputs
0x00, 0x00, 0x00, 0x01,
// Inputs[0]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x01,
// LUX assetID
0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a,
0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78,
0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf,
0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount = 1 MilliLux
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe8,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x01,
// index of signer
0x00, 0x00, 0x00, 0x05,
// length of memo
0x00, 0x00, 0x00, 0x00,
// chainID to modify
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
// chainID of the manager
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
// length of the manager address
0x00, 0x00, 0x00, 0x14,
// address of the manager
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xde, 0xad,
// number of validators
0x00, 0x00, 0x00, 0x00,
// secp256k1fx authorization type ID
0x00, 0x00, 0x00, 0x0a,
// number of signatures needed in authorization
0x00, 0x00, 0x00, 0x01,
// index of signer
0x00, 0x00, 0x00, 0x03,
0x01, 0x00, 0x23, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0x01, 0x00, 0x00, 0x00, 0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a, 0xeb, 0x00,
0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf, 0x25, 0x91,
0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x05, 0x00, 0x00, 0x00, 0xe8, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02,
0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x21, 0x22,
0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x31, 0x32,
0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x11, 0x12,
0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x14, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xde, 0xad, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
},
expectedJSON: convertNetToL1TxSimpleJSON,
},
@@ -323,207 +277,60 @@ func TestConvertNetworkToL1TxSerialization(t *testing.T) {
},
},
expectedBytes: []byte{
// Codec version
0x00, 0x01,
// ConvertNetworkToL1Tx Type ID
0x00, 0x00, 0x00, 0x23,
// Mainnet Network ID
0x00, 0x00, 0x00, 0x01,
// P-chain blockchain ID (31 zeros + 'P')
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
// Number of outputs
0x00, 0x00, 0x00, 0x02,
// Outputs[0]
// LUX assetID
0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a,
0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78,
0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf,
0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff,
// Stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x05, 0x39, 0x7f, 0xb1,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
// secp256k1fx output locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x61, 0x4e,
// threshold
0x00, 0x00, 0x00, 0x00,
// number of addresses
0x00, 0x00, 0x00, 0x00,
// Outputs[1]
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// Stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// secp256k1fx output locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// address[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// number of inputs
0x00, 0x00, 0x00, 0x03,
// inputs[0]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x01,
// LUX assetID
0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a,
0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78,
0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf,
0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount = 1 Lux
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x02,
// index of first signer
0x00, 0x00, 0x00, 0x02,
// index of second signer
0x00, 0x00, 0x00, 0x05,
// inputs[1]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x02,
// Custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// Stakeable locked input type ID
0x00, 0x00, 0x00, 0x15,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount
0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x01,
// index of signer
0x00, 0x00, 0x00, 0x00,
// inputs[2]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x03,
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x00,
// length of memo
0x00, 0x00, 0x00, 0x14,
// memo
0xf0, 0x9f, 0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c,
0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73,
0x01, 0x23, 0x45, 0x21,
// chainID to modify
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
// chainID of the manager
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
// length of the manager address
0x00, 0x00, 0x00, 0x14,
// address of the manager
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xde, 0xad,
// number of validators
0x00, 0x00, 0x00, 0x01,
// Validators[0]
// node ID length
0x00, 0x00, 0x00, 0x14,
// node ID
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
0x11, 0x22, 0x33, 0x44,
// weight
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
// balance
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40,
// BLS compressed public key
0xaf, 0xf4, 0xac, 0xb4, 0xc5, 0x43, 0x9b, 0x5d,
0x42, 0x6c, 0xad, 0xf9, 0xe9, 0x46, 0xd3, 0xa4,
0x52, 0xf7, 0xde, 0x34, 0x14, 0xd1, 0xad, 0x27,
0x33, 0x61, 0x33, 0x21, 0x1d, 0x8b, 0x90, 0xcf,
0x49, 0xfb, 0x97, 0xee, 0xbc, 0xde, 0xee, 0xf7,
0x14, 0xdc, 0x20, 0xf5, 0x4e, 0xd0, 0xd4, 0xd1,
// BLS compressed signature
0x8c, 0xfd, 0x79, 0x09, 0xd1, 0x53, 0xb9, 0x60,
0x4b, 0x62, 0xb1, 0x43, 0xba, 0x36, 0x20, 0x7b,
0xb7, 0xe6, 0x48, 0x67, 0x42, 0x44, 0x80, 0x20,
0x2a, 0x67, 0xdc, 0x68, 0x76, 0x83, 0x46, 0xd9,
0x5c, 0x90, 0x98, 0x3c, 0x2d, 0x27, 0x9c, 0x64,
0xc4, 0x3c, 0x51, 0x13, 0x6b, 0x2a, 0x05, 0xe0,
0x16, 0x02, 0xd5, 0x2a, 0xa6, 0x37, 0x6f, 0xda,
0x17, 0xfa, 0x6e, 0x2a, 0x18, 0xa0, 0x83, 0xe4,
0x9d, 0x9c, 0x45, 0x0e, 0xab, 0x7b, 0x89, 0xb1,
0xd5, 0x55, 0x5d, 0xa5, 0xc4, 0x89, 0x87, 0x2e,
0x02, 0xb7, 0xe5, 0x22, 0x7b, 0x77, 0x55, 0x0a,
0xf1, 0x33, 0x0e, 0x5a, 0x71, 0xf8, 0xc3, 0x68,
// RemainingBalanceOwner threshold
0x00, 0x00, 0x00, 0x01,
// RemainingBalanceOwner number of addresses
0x00, 0x00, 0x00, 0x01,
// RemainingBalanceOwner Addrs[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// DeactivationOwner threshold
0x00, 0x00, 0x00, 0x01,
// DeactivationOwner number of addresses
0x00, 0x00, 0x00, 0x01,
// DeactivationOwner Addrs[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// secp256k1fx authorization type ID
0x00, 0x00, 0x00, 0x0a,
// number of signatures needed in authorization
0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x23, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, 0x00, 0x21, 0xe6,
0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5,
0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf, 0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x16, 0x00,
0x00, 0x00, 0xb1, 0x7f, 0x39, 0x05, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x61, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x16, 0x00, 0x00, 0x00, 0xea, 0xfc, 0x3e, 0x34, 0x00, 0x00,
0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x55,
0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55,
0x66, 0x77, 0x03, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x01, 0x00, 0x00, 0x00, 0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4,
0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6,
0x05, 0xdf, 0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x05, 0x00, 0x00, 0x00, 0x40, 0x42,
0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00,
0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0x02, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x15, 0x00, 0x00, 0x00, 0xea, 0xfc, 0x3e, 0x34, 0x00, 0x00,
0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x03, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xf0, 0x9f,
0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73, 0x01, 0x23,
0x45, 0x21, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
0x17, 0x18, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,
0x37, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26,
0x27, 0x28, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
0x07, 0x08, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xad, 0x01, 0x00, 0x00, 0x00, 0x14, 0x00,
0x00, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66,
0x77, 0x88, 0x11, 0x22, 0x33, 0x44, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x40, 0x42,
0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0xf4, 0xac, 0xb4, 0xc5, 0x43, 0x9b, 0x5d, 0x42, 0x6c,
0xad, 0xf9, 0xe9, 0x46, 0xd3, 0xa4, 0x52, 0xf7, 0xde, 0x34, 0x14, 0xd1, 0xad, 0x27, 0x33, 0x61,
0x33, 0x21, 0x1d, 0x8b, 0x90, 0xcf, 0x49, 0xfb, 0x97, 0xee, 0xbc, 0xde, 0xee, 0xf7, 0x14, 0xdc,
0x20, 0xf5, 0x4e, 0xd0, 0xd4, 0xd1, 0x8c, 0xfd, 0x79, 0x09, 0xd1, 0x53, 0xb9, 0x60, 0x4b, 0x62,
0xb1, 0x43, 0xba, 0x36, 0x20, 0x7b, 0xb7, 0xe6, 0x48, 0x67, 0x42, 0x44, 0x80, 0x20, 0x2a, 0x67,
0xdc, 0x68, 0x76, 0x83, 0x46, 0xd9, 0x5c, 0x90, 0x98, 0x3c, 0x2d, 0x27, 0x9c, 0x64, 0xc4, 0x3c,
0x51, 0x13, 0x6b, 0x2a, 0x05, 0xe0, 0x16, 0x02, 0xd5, 0x2a, 0xa6, 0x37, 0x6f, 0xda, 0x17, 0xfa,
0x6e, 0x2a, 0x18, 0xa0, 0x83, 0xe4, 0x9d, 0x9c, 0x45, 0x0e, 0xab, 0x7b, 0x89, 0xb1, 0xd5, 0x55,
0x5d, 0xa5, 0xc4, 0x89, 0x87, 0x2e, 0x02, 0xb7, 0xe5, 0x22, 0x7b, 0x77, 0x55, 0x0a, 0xf1, 0x33,
0x0e, 0x5a, 0x71, 0xf8, 0xc3, 0x68, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x55,
0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55,
0x66, 0x77, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99,
0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x0a, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
expectedJSON: convertNetToL1TxComplexJSON,
},
@@ -162,149 +162,41 @@ func TestDisableL1ValidatorTxSerialization(t *testing.T) {
require.NoError(err)
expectedBytes := []byte{
// Codec version
0x00, 0x01,
// DisableL1ValidatorTx Type ID
0x00, 0x00, 0x00, 0x28,
// Network ID
0x00, 0x00, 0x00, 0x01,
// P-chain blockchain ID (31 zeros + 'P')
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
// Number of outputs
0x00, 0x00, 0x00, 0x02,
// Outputs[0]
// LUX assetID
0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a,
0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78,
0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf,
0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff,
// Stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x05, 0x39, 0x7f, 0xb1,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
// secp256k1fx output locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x61, 0x4e,
// threshold
0x00, 0x00, 0x00, 0x00,
// number of addresses
0x00, 0x00, 0x00, 0x00,
// Outputs[1]
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// Stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// secp256k1fx output locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// address[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// number of inputs
0x00, 0x00, 0x00, 0x03,
// inputs[0]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x01,
// LUX assetID
0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a,
0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78,
0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf,
0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount = 1 Lux
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x02,
// index of first signer
0x00, 0x00, 0x00, 0x02,
// index of second signer
0x00, 0x00, 0x00, 0x05,
// inputs[1]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x02,
// Custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// Stakeable locked input type ID
0x00, 0x00, 0x00, 0x15,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount
0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x01,
// index of signer
0x00, 0x00, 0x00, 0x00,
// inputs[2]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x03,
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x00,
// length of memo
0x00, 0x00, 0x00, 0x14,
// memo
0xf0, 0x9f, 0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c,
0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73,
0x01, 0x23, 0x45, 0x21,
// validation ID
0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
// disable auth type ID
0x00, 0x00, 0x00, 0x0a,
// disable auth number of indices
0x00, 0x00, 0x00, 0x01,
// disable auth index
0x00, 0x00, 0x00, 0x09,
0x01, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, 0x00, 0x21, 0xe6,
0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5,
0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf, 0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x16, 0x00,
0x00, 0x00, 0xb1, 0x7f, 0x39, 0x05, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x61, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x16, 0x00, 0x00, 0x00, 0xea, 0xfc, 0x3e, 0x34, 0x00, 0x00,
0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x55,
0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55,
0x66, 0x77, 0x03, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x01, 0x00, 0x00, 0x00, 0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4,
0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6,
0x05, 0xdf, 0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x05, 0x00, 0x00, 0x00, 0x40, 0x42,
0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00,
0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0x02, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x15, 0x00, 0x00, 0x00, 0xea, 0xfc, 0x3e, 0x34, 0x00, 0x00,
0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x03, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xf0, 0x9f,
0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73, 0x01, 0x23,
0x45, 0x21, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab,
0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab,
0xcd, 0xef, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00,
}
require.Equal(expectedBytes, txBytes)
@@ -160,145 +160,41 @@ func TestIncreaseL1ValidatorBalanceTxSerialization(t *testing.T) {
require.NoError(err)
expectedBytes := []byte{
// Codec version
0x00, 0x01,
// IncreaseL1ValidatorBalanceTx Type ID
0x00, 0x00, 0x00, 0x27,
// Network ID
0x00, 0x00, 0x00, 0x01,
// P-chain blockchain ID (31 zeros + 'P')
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
// Number of outputs
0x00, 0x00, 0x00, 0x02,
// Outputs[0]
// LUX assetID
0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a,
0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78,
0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf,
0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff,
// Stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x05, 0x39, 0x7f, 0xb1,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
// secp256k1fx output locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x61, 0x4e,
// threshold
0x00, 0x00, 0x00, 0x00,
// number of addresses
0x00, 0x00, 0x00, 0x00,
// Outputs[1]
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// Stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// secp256k1fx output locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// address[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// number of inputs
0x00, 0x00, 0x00, 0x03,
// inputs[0]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x01,
// LUX assetID
0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a,
0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78,
0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf,
0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount = 1 Lux
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x02,
// index of first signer
0x00, 0x00, 0x00, 0x02,
// index of second signer
0x00, 0x00, 0x00, 0x05,
// inputs[1]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x02,
// Custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// Stakeable locked input type ID
0x00, 0x00, 0x00, 0x15,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount
0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x01,
// index of signer
0x00, 0x00, 0x00, 0x00,
// inputs[2]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x03,
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x00,
// length of memo
0x00, 0x00, 0x00, 0x14,
// memo
0xf0, 0x9f, 0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c,
0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73,
0x01, 0x23, 0x45, 0x21,
// validation ID
0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
// balance
0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
0x01, 0x00, 0x27, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, 0x00, 0x21, 0xe6,
0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5,
0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf, 0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x16, 0x00,
0x00, 0x00, 0xb1, 0x7f, 0x39, 0x05, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x61, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x16, 0x00, 0x00, 0x00, 0xea, 0xfc, 0x3e, 0x34, 0x00, 0x00,
0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x55,
0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55,
0x66, 0x77, 0x03, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x01, 0x00, 0x00, 0x00, 0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4,
0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6,
0x05, 0xdf, 0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x05, 0x00, 0x00, 0x00, 0x40, 0x42,
0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00,
0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0x02, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x15, 0x00, 0x00, 0x00, 0xea, 0xfc, 0x3e, 0x34, 0x00, 0x00,
0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x03, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xf0, 0x9f,
0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73, 0x01, 0x23,
0x45, 0x21, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab,
0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab,
0xcd, 0xef, 0x10, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe,
}
require.Equal(expectedBytes, txBytes)
@@ -168,157 +168,46 @@ func TestRegisterL1ValidatorTxSerialization(t *testing.T) {
require.NoError(err)
expectedBytes := []byte{
// Codec version
0x00, 0x01,
// RegisterL1ValidatorTx Type ID
0x00, 0x00, 0x00, 0x25,
// Network ID
0x00, 0x00, 0x00, 0x01,
// P-chain blockchain ID (31 zeros + 'P')
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
// Number of outputs
0x00, 0x00, 0x00, 0x02,
// Outputs[0]
// LUX assetID
0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a,
0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78,
0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf,
0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff,
// Stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x05, 0x39, 0x7f, 0xb1,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
// secp256k1fx output locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x61, 0x4e,
// threshold
0x00, 0x00, 0x00, 0x00,
// number of addresses
0x00, 0x00, 0x00, 0x00,
// Outputs[1]
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// Stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// secp256k1fx output locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// address[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// number of inputs
0x00, 0x00, 0x00, 0x03,
// inputs[0]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x01,
// LUX assetID
0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a,
0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78,
0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf,
0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount = 1 Lux
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x02,
// index of first signer
0x00, 0x00, 0x00, 0x02,
// index of second signer
0x00, 0x00, 0x00, 0x05,
// inputs[1]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x02,
// Custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// Stakeable locked input type ID
0x00, 0x00, 0x00, 0x15,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount
0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x01,
// index of signer
0x00, 0x00, 0x00, 0x00,
// inputs[2]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x03,
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x00,
// length of memo
0x00, 0x00, 0x00, 0x14,
// memo
0xf0, 0x9f, 0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c,
0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73,
0x01, 0x23, 0x45, 0x21,
// balance
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40,
// proof of possession (BLS signature)
0x8c, 0xfd, 0x79, 0x09, 0xd1, 0x53, 0xb9, 0x60,
0x4b, 0x62, 0xb1, 0x43, 0xba, 0x36, 0x20, 0x7b,
0xb7, 0xe6, 0x48, 0x67, 0x42, 0x44, 0x80, 0x20,
0x2a, 0x67, 0xdc, 0x68, 0x76, 0x83, 0x46, 0xd9,
0x5c, 0x90, 0x98, 0x3c, 0x2d, 0x27, 0x9c, 0x64,
0xc4, 0x3c, 0x51, 0x13, 0x6b, 0x2a, 0x05, 0xe0,
0x16, 0x02, 0xd5, 0x2a, 0xa6, 0x37, 0x6f, 0xda,
0x17, 0xfa, 0x6e, 0x2a, 0x18, 0xa0, 0x83, 0xe4,
0x9d, 0x9c, 0x45, 0x0e, 0xab, 0x7b, 0x89, 0xb1,
0xd5, 0x55, 0x5d, 0xa5, 0xc4, 0x89, 0x87, 0x2e,
0x02, 0xb7, 0xe5, 0x22, 0x7b, 0x77, 0x55, 0x0a,
0xf1, 0x33, 0x0e, 0x5a, 0x71, 0xf8, 0xc3, 0x68,
// length of message
0x00, 0x00, 0x00, 0x07,
// message
0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
0x01, 0x00, 0x25, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, 0x00, 0x21, 0xe6,
0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5,
0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf, 0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x16, 0x00,
0x00, 0x00, 0xb1, 0x7f, 0x39, 0x05, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x61, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x16, 0x00, 0x00, 0x00, 0xea, 0xfc, 0x3e, 0x34, 0x00, 0x00,
0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x55,
0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55,
0x66, 0x77, 0x03, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x01, 0x00, 0x00, 0x00, 0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4,
0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6,
0x05, 0xdf, 0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x05, 0x00, 0x00, 0x00, 0x40, 0x42,
0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00,
0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0x02, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x15, 0x00, 0x00, 0x00, 0xea, 0xfc, 0x3e, 0x34, 0x00, 0x00,
0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x03, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xf0, 0x9f,
0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73, 0x01, 0x23,
0x45, 0x21, 0x40, 0x42, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xfd, 0x79, 0x09, 0xd1, 0x53,
0xb9, 0x60, 0x4b, 0x62, 0xb1, 0x43, 0xba, 0x36, 0x20, 0x7b, 0xb7, 0xe6, 0x48, 0x67, 0x42, 0x44,
0x80, 0x20, 0x2a, 0x67, 0xdc, 0x68, 0x76, 0x83, 0x46, 0xd9, 0x5c, 0x90, 0x98, 0x3c, 0x2d, 0x27,
0x9c, 0x64, 0xc4, 0x3c, 0x51, 0x13, 0x6b, 0x2a, 0x05, 0xe0, 0x16, 0x02, 0xd5, 0x2a, 0xa6, 0x37,
0x6f, 0xda, 0x17, 0xfa, 0x6e, 0x2a, 0x18, 0xa0, 0x83, 0xe4, 0x9d, 0x9c, 0x45, 0x0e, 0xab, 0x7b,
0x89, 0xb1, 0xd5, 0x55, 0x5d, 0xa5, 0xc4, 0x89, 0x87, 0x2e, 0x02, 0xb7, 0xe5, 0x22, 0x7b, 0x77,
0x55, 0x0a, 0xf1, 0x33, 0x0e, 0x5a, 0x71, 0xf8, 0xc3, 0x68, 0x07, 0x00, 0x00, 0x00, 0x6d, 0x65,
0x73, 0x73, 0x61, 0x67, 0x65,
}
// Skip byte comparison when CGO is disabled because CGO BLS (BLST) and
// pure Go BLS produce different signatures from the same private key
@@ -109,59 +109,19 @@ func TestRemoveChainValidatorTxSerialization(t *testing.T) {
require.NoError(simpleRemoveValidatorTx.SyntacticVerify(rt))
expectedUnsignedSimpleRemoveValidatorTxBytes := []byte{
// Codec version
0x00, 0x01,
// RemoveChainValidatorTx Type ID (post codec-collapse: 27)
0x00, 0x00, 0x00, 0x1b,
// Mainnet network ID
0x00, 0x00, 0x00, 0x01,
// P-chain blockchain ID (31 zeros + 'P')
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Number of outputs
0x00, 0x00, 0x00, 0x00,
// Number of inputs
0x00, 0x00, 0x00, 0x01,
// Inputs[0]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x01,
// Mainnet LUX assetID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount = 1 MilliLux (1000 MicroLux)
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe8,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x01,
// index of signer
0x00, 0x00, 0x00, 0x05,
// length of memo field
0x00, 0x00, 0x00, 0x00,
// nodeID to remove
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
0x11, 0x22, 0x33, 0x44,
// netID to remove from
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
// secp256k1fx authorization type ID (secp256k1fx.Input)
0x00, 0x00, 0x00, 0x0a,
// number of signatures needed in authorization
0x00, 0x00, 0x00, 0x01,
// index of signer
0x00, 0x00, 0x00, 0x03,
0x01, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0x01, 0x00, 0x00, 0x00, 0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff, 0x0f, 0x33,
0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b, 0x6b, 0x42,
0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x05, 0x00, 0x00, 0x00, 0xe8, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x22,
0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x11, 0x22,
0x33, 0x44, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
0x17, 0x18, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,
0x37, 0x38, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
}
var unsignedSimpleRemoveValidatorTx UnsignedTx = simpleRemoveValidatorTx
unsignedSimpleRemoveValidatorTxBytes, err := Codec.Marshal(CodecVersion, &unsignedSimpleRemoveValidatorTx)
@@ -279,151 +239,42 @@ func TestRemoveChainValidatorTxSerialization(t *testing.T) {
require.NoError(complexRemoveValidatorTx.SyntacticVerify(rt2))
expectedUnsignedComplexRemoveValidatorTxBytes := []byte{
// Codec version
0x00, 0x01,
// RemoveChainValidatorTx Type ID (post codec-collapse: 27)
0x00, 0x00, 0x00, 0x1b,
// Mainnet network ID
0x00, 0x00, 0x00, 0x01,
// P-chain blockchain ID (31 zeros + 'P')
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Number of outputs
0x00, 0x00, 0x00, 0x02,
// Outputs[0]
// Mainnet LUX assetID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// Stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x05, 0x39, 0x7f, 0xb1,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
// secp256k1fx output locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x61, 0x4e,
// threshold
0x00, 0x00, 0x00, 0x00,
// number of addresses
0x00, 0x00, 0x00, 0x00,
// Outputs[1]
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// Stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// secp256k1fx output locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// address[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// number of inputs
0x00, 0x00, 0x00, 0x03,
// inputs[0]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x01,
// Mainnet LUX assetID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount = 1 Lux (1,000,000 MicroLux)
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x02,
// index of first signer
0x00, 0x00, 0x00, 0x02,
// index of second signer
0x00, 0x00, 0x00, 0x05,
// inputs[1]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x02,
// Custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// Stakeable locked input type ID
0x00, 0x00, 0x00, 0x15,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount
0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x01,
// index of signer
0x00, 0x00, 0x00, 0x00,
// inputs[2]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x03,
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x00,
// length of memo
0x00, 0x00, 0x00, 0x14,
// memo
0xf0, 0x9f, 0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c,
0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73,
0x01, 0x23, 0x45, 0x21,
// nodeID to remove
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
0x11, 0x22, 0x33, 0x44,
// netID to remove from
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
// secp256k1fx authorization type ID (secp256k1fx.Input)
0x00, 0x00, 0x00, 0x0a,
// number of signatures needed in authorization
0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x51, 0xc2,
0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff, 0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62,
0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b, 0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x16, 0x00,
0x00, 0x00, 0xb1, 0x7f, 0x39, 0x05, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x61, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x16, 0x00, 0x00, 0x00, 0xea, 0xfc, 0x3e, 0x34, 0x00, 0x00,
0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x55,
0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55,
0x66, 0x77, 0x03, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x01, 0x00, 0x00, 0x00, 0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02,
0x01, 0xff, 0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62, 0x24, 0x25, 0x45, 0x52,
0xc9, 0x6b, 0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x05, 0x00, 0x00, 0x00, 0x40, 0x42,
0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00,
0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0x02, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x15, 0x00, 0x00, 0x00, 0xea, 0xfc, 0x3e, 0x34, 0x00, 0x00,
0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x03, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xf0, 0x9f,
0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73, 0x01, 0x23,
0x45, 0x21, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66,
0x77, 0x88, 0x11, 0x22, 0x33, 0x44, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x11, 0x12,
0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x31, 0x32,
0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
}
var unsignedComplexRemoveValidatorTx UnsignedTx = complexRemoveValidatorTx
unsignedComplexRemoveValidatorTxBytes, err := Codec.Marshal(CodecVersion, &unsignedComplexRemoveValidatorTx)
@@ -153,142 +153,39 @@ func TestSetL1ValidatorWeightTxSerialization(t *testing.T) {
require.NoError(err)
expectedBytes := []byte{
// Codec version
0x00, 0x01,
// SetL1ValidatorWeightTx Type ID
0x00, 0x00, 0x00, 0x26,
// Network ID
0x00, 0x00, 0x00, 0x01,
// P-chain blockchain ID (31 zeros + 'P')
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
// Number of outputs
0x00, 0x00, 0x00, 0x02,
// Outputs[0]
// LUX assetID
0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a,
0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78,
0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf,
0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff,
// Stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x05, 0x39, 0x7f, 0xb1,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
// secp256k1fx output locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x61, 0x4e,
// threshold
0x00, 0x00, 0x00, 0x00,
// number of addresses
0x00, 0x00, 0x00, 0x00,
// Outputs[1]
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// Stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// secp256k1fx output locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// address[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// number of inputs
0x00, 0x00, 0x00, 0x03,
// inputs[0]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x01,
// LUX assetID
0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a,
0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78,
0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf,
0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount = 1 Lux
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x02,
// index of first signer
0x00, 0x00, 0x00, 0x02,
// index of second signer
0x00, 0x00, 0x00, 0x05,
// inputs[1]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x02,
// Custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// Stakeable locked input type ID
0x00, 0x00, 0x00, 0x15,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount
0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x01,
// index of signer
0x00, 0x00, 0x00, 0x00,
// inputs[2]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x03,
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x00,
// length of memo
0x00, 0x00, 0x00, 0x14,
// memo
0xf0, 0x9f, 0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c,
0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73,
0x01, 0x23, 0x45, 0x21,
// length of message
0x00, 0x00, 0x00, 0x07,
// message
0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
0x01, 0x00, 0x26, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, 0x00, 0x21, 0xe6,
0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5,
0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf, 0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x16, 0x00,
0x00, 0x00, 0xb1, 0x7f, 0x39, 0x05, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x61, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x16, 0x00, 0x00, 0x00, 0xea, 0xfc, 0x3e, 0x34, 0x00, 0x00,
0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x55,
0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55,
0x66, 0x77, 0x03, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x01, 0x00, 0x00, 0x00, 0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4,
0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6,
0x05, 0xdf, 0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x05, 0x00, 0x00, 0x00, 0x40, 0x42,
0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00,
0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0x02, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x15, 0x00, 0x00, 0x00, 0xea, 0xfc, 0x3e, 0x34, 0x00, 0x00,
0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x03, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xf0, 0x9f,
0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73, 0x01, 0x23,
0x45, 0x21, 0x07, 0x00, 0x00, 0x00, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
}
require.Equal(expectedBytes, txBytes)
@@ -103,67 +103,21 @@ func TestTransferChainOwnershipTxSerialization(t *testing.T) {
require.NoError(simpleTransferChainOwnershipTx.SyntacticVerify(rt))
expectedUnsignedSimpleTransferChainOwnershipTxBytes := []byte{
// Codec version
0x00, 0x01,
// TransferChainOwnershipTx Type ID
0x00, 0x00, 0x00, 0x21,
// Mainnet network ID
0x00, 0x00, 0x00, 0x01,
// P-chain blockchain ID (31 zeros + 'P')
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Number of outputs
0x00, 0x00, 0x00, 0x00,
// Number of inputs
0x00, 0x00, 0x00, 0x01,
// Inputs[0]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x01,
// Mainnet LUX assetID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount = 1 MilliLux
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe8,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x01,
// index of signer
0x00, 0x00, 0x00, 0x05,
// length of memo
0x00, 0x00, 0x00, 0x00,
// netID to modify
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
// secp256k1fx authorization type ID
0x00, 0x00, 0x00, 0x0a,
// number of signatures needed in authorization
0x00, 0x00, 0x00, 0x01,
// index of signer
0x00, 0x00, 0x00, 0x03,
// secp256k1fx output owners type ID
0x00, 0x00, 0x00, 0x0b,
// locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addrs
0x00, 0x00, 0x00, 0x01,
// Addrs[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
0x01, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0x01, 0x00, 0x00, 0x00, 0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff, 0x0f, 0x33,
0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b, 0x6b, 0x42,
0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x05, 0x00, 0x00, 0x00, 0xe8, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02,
0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x21, 0x22,
0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x0a, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x55,
0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55,
0x66, 0x77,
}
var unsignedSimpleTransferChainOwnershipTx UnsignedTx = simpleTransferChainOwnershipTx
unsignedSimpleTransferChainOwnershipTxBytes, err := Codec.Marshal(CodecVersion, &unsignedSimpleTransferChainOwnershipTx)
@@ -287,159 +241,44 @@ func TestTransferChainOwnershipTxSerialization(t *testing.T) {
require.NoError(complexTransferChainOwnershipTx.SyntacticVerify(rt2))
expectedUnsignedComplexTransferChainOwnershipTxBytes := []byte{
// Codec version
0x00, 0x01,
// TransferChainOwnershipTx Type ID
0x00, 0x00, 0x00, 0x21,
// Mainnet network ID
0x00, 0x00, 0x00, 0x01,
// P-chain blockchain ID (31 zeros + 'P')
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Number of outputs
0x00, 0x00, 0x00, 0x02,
// Outputs[0]
// Mainnet LUX assetID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// Stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x05, 0x39, 0x7f, 0xb1,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
// secp256k1fx output locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x61, 0x4e,
// threshold
0x00, 0x00, 0x00, 0x00,
// number of addresses
0x00, 0x00, 0x00, 0x00,
// Outputs[1]
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// Stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// secp256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// secp256k1fx output locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// address[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// number of inputs
0x00, 0x00, 0x00, 0x03,
// inputs[0]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x01,
// Mainnet LUX assetID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount = 1 Lux
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x02,
// index of first signer
0x00, 0x00, 0x00, 0x02,
// index of second signer
0x00, 0x00, 0x00, 0x05,
// inputs[1]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x02,
// Custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// Stakeable locked input type ID
0x00, 0x00, 0x00, 0x15,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount
0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x01,
// index of signer
0x00, 0x00, 0x00, 0x00,
// inputs[2]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x03,
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x00,
// length of memo
0x00, 0x00, 0x00, 0x14,
// memo
0xf0, 0x9f, 0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c,
0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73,
0x01, 0x23, 0x45, 0x21,
// netID to modify
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
// secp256k1fx authorization type ID
0x00, 0x00, 0x00, 0x0a,
// number of signatures needed in authorization
0x00, 0x00, 0x00, 0x00,
// secp256k1fx output owners type ID
0x00, 0x00, 0x00, 0x0b,
// locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addrs
0x00, 0x00, 0x00, 0x01,
// Addrs[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
0x01, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x51, 0xc2,
0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff, 0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62,
0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b, 0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x16, 0x00,
0x00, 0x00, 0xb1, 0x7f, 0x39, 0x05, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x61, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x16, 0x00, 0x00, 0x00, 0xea, 0xfc, 0x3e, 0x34, 0x00, 0x00,
0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x55,
0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55,
0x66, 0x77, 0x03, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x01, 0x00, 0x00, 0x00, 0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02,
0x01, 0xff, 0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62, 0x24, 0x25, 0x45, 0x52,
0xc9, 0x6b, 0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x05, 0x00, 0x00, 0x00, 0x40, 0x42,
0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00,
0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0x02, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x15, 0x00, 0x00, 0x00, 0xea, 0xfc, 0x3e, 0x34, 0x00, 0x00,
0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x03, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xf0, 0x9f,
0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73, 0x01, 0x23,
0x45, 0x21, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
0x17, 0x18, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,
0x37, 0x38, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xea, 0xfc,
0x3e, 0x34, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x55,
0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55,
0x66, 0x77,
}
var unsignedComplexTransferChainOwnershipTx UnsignedTx = complexTransferChainOwnershipTx
unsignedComplexTransferChainOwnershipTxBytes, err := Codec.Marshal(CodecVersion, &unsignedComplexTransferChainOwnershipTx)
+66 -269
View File
@@ -124,105 +124,30 @@ func TestTransformChainTxSerialization(t *testing.T) {
require.NoError(simpleTransformTx.SyntacticVerify(rt))
expectedUnsignedSimpleTransformTxBytes := []byte{
// Codec version
0x00, 0x01,
// TransformChainTx type ID (post codec-collapse: 28)
0x00, 0x00, 0x00, 0x1c,
// Mainnet network ID
0x00, 0x00, 0x00, 0x01,
// P-chain blockchain ID (31 zeros + 'P')
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// number of outputs
0x00, 0x00, 0x00, 0x00,
// number of inputs
0x00, 0x00, 0x00, 0x02,
// inputs[0]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x01,
// Mainnet LUX assetID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount = 10 LUX (10 * 10^6 with 6 decimals)
0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x96, 0x80,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x01,
// index of signer
0x00, 0x00, 0x00, 0x05,
// inputs[1]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x02,
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount
0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x01,
// index of signer
0x00, 0x00, 0x00, 0x00,
// length of memo
0x00, 0x00, 0x00, 0x00,
// netID being transformed
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
// staking asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// initial supply
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// maximum supply
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// minimum consumption rate
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe8,
// maximum consumption rate (1,000,000 = 0x0f4240)
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40,
// minimum staking amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
// maximum staking amount
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// minimum staking duration
0x00, 0x00, 0x00, 0x01,
// maximum staking duration
0x01, 0xe1, 0x33, 0x80,
// minimum delegation fee
0x00, 0x0f, 0x42, 0x40,
// minimum delegation amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
// maximum validator weight factor
0x01,
// uptime requirement
0x00, 0x0e, 0x7e, 0xf0,
// secp256k1fx authorization type ID
0x00, 0x00, 0x00, 0x0a,
// number of signatures needed in authorization
0x00, 0x00, 0x00, 0x01,
// authorization signfature index
0x00, 0x00, 0x00, 0x03,
0x01, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0x01, 0x00, 0x00, 0x00, 0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff, 0x0f, 0x33,
0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b, 0x6b, 0x42,
0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x05, 0x00, 0x00, 0x00, 0x80, 0x96, 0x98, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x02, 0x00, 0x00, 0x00, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x05, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x11, 0x12,
0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x31, 0x32,
0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x42,
0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x80, 0x33, 0xe1, 0x01, 0x40, 0x42,
0x0f, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x7e, 0x0e, 0x00, 0x0a,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
}
var unsignedSimpleTransformTx UnsignedTx = simpleTransformTx
unsignedSimpleTransformTxBytes, err := Codec.Marshal(CodecVersion, &unsignedSimpleTransformTx)
@@ -352,176 +277,48 @@ func TestTransformChainTxSerialization(t *testing.T) {
require.NoError(complexTransformTx.SyntacticVerify(rt2))
expectedUnsignedComplexTransformTxBytes := []byte{
// Codec version
0x00, 0x01,
// TransformChainTx type ID (post codec-collapse: 28)
0x00, 0x00, 0x00, 0x1c,
// Mainnet network ID
0x00, 0x00, 0x00, 0x01,
// P-chain blockchain ID (31 zeros + 'P')
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// number of outputs
0x00, 0x00, 0x00, 0x02,
// outputs[0]
// Mainnet LUX asset ID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// Stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x05, 0x39, 0x7f, 0xb1,
// seck256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
// secp256k1fx locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x61, 0x4e,
// threshold
0x00, 0x00, 0x00, 0x00,
// number of addresses
0x00, 0x00, 0x00, 0x00,
// outputs[1]
// custom assest ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// Stakeable locked output type ID
0x00, 0x00, 0x00, 0x16,
// Locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// seck256k1fx transfer output type ID
0x00, 0x00, 0x00, 0x07,
// amount
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// secp256k1fx locktime
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// address[0]
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
0x44, 0x55, 0x66, 0x77,
// number of inputs
0x00, 0x00, 0x00, 0x03,
// inputs[0]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x01,
// Mainnet LUX asset ID
0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff,
0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e,
0xef, 0x62, 0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b,
0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// amount = 1 KiloLux (with 6 decimals = 1,000,000,000 microLUX)
0x00, 0x00, 0x00, 0x00, 0x3b, 0x9a, 0xca, 0x00,
// number of signatures indices
0x00, 0x00, 0x00, 0x02,
// first signature index
0x00, 0x00, 0x00, 0x02,
// second signature index
0x00, 0x00, 0x00, 0x05,
// inputs[1]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x02,
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// stakeable locked input type ID
0x00, 0x00, 0x00, 0x15,
// locktime
0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount
0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x01,
// index of signer
0x00, 0x00, 0x00, 0x00,
// inputs[2]
// TxID
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
// Tx output index
0x00, 0x00, 0x00, 0x03,
// custom asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// secp256k1fx transfer input type ID
0x00, 0x00, 0x00, 0x05,
// input amount
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// number of signatures needed in input
0x00, 0x00, 0x00, 0x00,
// memo length
0x00, 0x00, 0x00, 0x14,
// memo
0xf0, 0x9f, 0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c,
0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73,
0x01, 0x23, 0x45, 0x21,
// netID being transformed
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
// staking asset ID
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31,
// initial supply
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// maximum supply
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// minimum consumption rate
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// maximum consumption rate
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// minimum staking amount
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
// maximum staking amount
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// minimum staking duration
0x00, 0x00, 0x00, 0x01,
// maximum staking duration
0x00, 0x00, 0x00, 0x01,
// minimum delegation fee
0x00, 0x00, 0x00, 0x00,
// minimum delegation amount
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// maximum validator weight factor
0xff,
// uptime requirement
0x00, 0x00, 0x00, 0x00,
// secp256k1fx authorization type ID
0x00, 0x00, 0x00, 0x0a,
// number of signatures needed in authorization
0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x51, 0xc2,
0x4f, 0xe7, 0xee, 0x02, 0x01, 0xff, 0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62,
0x24, 0x25, 0x45, 0x52, 0xc9, 0x6b, 0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x16, 0x00,
0x00, 0x00, 0xb1, 0x7f, 0x39, 0x05, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x61, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x16, 0x00, 0x00, 0x00, 0xea, 0xfc, 0x3e, 0x34, 0x00, 0x00,
0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x55,
0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55,
0x66, 0x77, 0x03, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x01, 0x00, 0x00, 0x00, 0x51, 0xc2, 0x4f, 0xe7, 0xee, 0x02,
0x01, 0xff, 0x0f, 0x33, 0x5f, 0x51, 0x99, 0x28, 0xdb, 0x6e, 0xef, 0x62, 0x24, 0x25, 0x45, 0x52,
0xc9, 0x6b, 0x6b, 0x42, 0x5f, 0xbc, 0x18, 0xfa, 0x24, 0x3b, 0x05, 0x00, 0x00, 0x00, 0x00, 0xca,
0x9a, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00,
0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa,
0x99, 0x88, 0x02, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77,
0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x15, 0x00, 0x00, 0x00, 0xea, 0xfc, 0x3e, 0x34, 0x00, 0x00,
0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee,
0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x03, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xf0, 0x9f,
0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73, 0x01, 0x23,
0x45, 0x21, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
0x17, 0x18, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,
0x37, 0x38, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33,
0x55, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
}
var unsignedComplexTransformTx UnsignedTx = complexTransformTx
unsignedComplexTransformTxBytes, err := Codec.Marshal(CodecVersion, &unsignedComplexTransformTx)
@@ -36,7 +36,7 @@ func TestParseAddressedCallJunk(t *testing.T) {
func TestAddressedCallBytes(t *testing.T) {
require := require.New(t)
base64Payload := "AAAAAAABAAAAEAECAwAAAAAAAAAAAAAAAAAAAAADCgsM"
base64Payload := "AAABAAAAEAAAAAECAwAAAAAAAAAAAAAAAAADAAAACgsM"
addressedPayload, err := NewAddressedCall(
[]byte{1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
[]byte{10, 11, 12},
+16 -63
View File
@@ -27,68 +27,21 @@ func TestBaseTxSerialization(t *testing.T) {
require := require.New(t)
expected := []byte{
// Codec version:
0x00, 0x00,
// txID:
0x00, 0x00, 0x00, 0x00,
// networkID:
0x00, 0x00, 0x01, 0x71, // 369 = UnitTestID
// blockchainID:
0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// number of outs:
0x00, 0x00, 0x00, 0x01,
// output[0]:
// assetID:
0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// fxID:
0x00, 0x00, 0x00, 0x07,
// secp256k1 Transferable Output:
// amount:
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x39,
// locktime:
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold:
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// address[0]
0xfc, 0xed, 0xa8, 0xf9, 0x0f, 0xcb, 0x5d, 0x30,
0x61, 0x4b, 0x99, 0xd7, 0x9f, 0xc4, 0xba, 0xa2,
0x93, 0x07, 0x76, 0x26,
// number of inputs:
0x00, 0x00, 0x00, 0x01,
// txID:
0xff, 0xfe, 0xfd, 0xfc, 0xfb, 0xfa, 0xf9, 0xf8,
0xf7, 0xf6, 0xf5, 0xf4, 0xf3, 0xf2, 0xf1, 0xf0,
0xef, 0xee, 0xed, 0xec, 0xeb, 0xea, 0xe9, 0xe8,
0xe7, 0xe6, 0xe5, 0xe4, 0xe3, 0xe2, 0xe1, 0xe0,
// utxo index:
0x00, 0x00, 0x00, 0x01,
// assetID:
0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// fxID:
0x00, 0x00, 0x00, 0x05,
// amount:
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x31,
// number of signatures:
0x00, 0x00, 0x00, 0x01,
// signature index[0]:
0x00, 0x00, 0x00, 0x02,
// Memo length:
0x00, 0x00, 0x00, 0x04,
// Memo:
0x00, 0x01, 0x02, 0x03,
// Number of credentials
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00,
0x00, 0x00, 0x39, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xed, 0xa8, 0xf9, 0x0f, 0xcb,
0x5d, 0x30, 0x61, 0x4b, 0x99, 0xd7, 0x9f, 0xc4, 0xba, 0xa2, 0x93, 0x07, 0x76, 0x26, 0x01, 0x00,
0x00, 0x00, 0xff, 0xfe, 0xfd, 0xfc, 0xfb, 0xfa, 0xf9, 0xf8, 0xf7, 0xf6, 0xf5, 0xf4, 0xf3, 0xf2,
0xf1, 0xf0, 0xef, 0xee, 0xed, 0xec, 0xeb, 0xea, 0xe9, 0xe8, 0xe7, 0xe6, 0xe5, 0xe4, 0xe3, 0xe2,
0xe1, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x31, 0xd4, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01,
0x02, 0x03, 0x00, 0x00, 0x00, 0x00,
}
tx := &Tx{Unsigned: &BaseTx{BaseTx: lux.BaseTx{
@@ -133,7 +86,7 @@ func TestBaseTxSerialization(t *testing.T) {
require.NoError(err)
require.NoError(tx.Initialize(parser.Codec()))
require.Equal("28f9BswnotzWBpsXKeubSZW8xz32snhyyQ6ac89oz7seExtAs5", tx.ID().String())
require.Equal("2Rxg3BTzwShRePp48i9WX8XpYsFkn8eMNo6AatcgEE9yyGqsni", tx.ID().String())
result := tx.Bytes()
require.Equal(expected, result)
+46 -187
View File
@@ -20,80 +20,29 @@ func TestCreateAssetTxSerialization(t *testing.T) {
require := require.New(t)
expected := []byte{
// Codec version:
0x00, 0x00,
// txID:
0x00, 0x00, 0x00, 0x01,
// networkID:
0x00, 0x00, 0x00, 0x02,
// blockchainID:
0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee,
0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc,
0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa,
0x99, 0x99, 0x99, 0x99, 0x88, 0x88, 0x88, 0x88,
// number of outs:
0x00, 0x00, 0x00, 0x01,
// output[0]:
// assetID:
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
// output:
0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x30, 0x39, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xd4, 0x31, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x02, 0x51, 0x02, 0x5c, 0x61,
0xfb, 0xcf, 0xc0, 0x78, 0xf6, 0x93, 0x34, 0xf8,
0x34, 0xbe, 0x6d, 0xd2, 0x6d, 0x55, 0xa9, 0x55,
0xc3, 0x34, 0x41, 0x28, 0xe0, 0x60, 0x12, 0x8e,
0xde, 0x35, 0x23, 0xa2, 0x4a, 0x46, 0x1c, 0x89,
0x43, 0xab, 0x08, 0x59,
// number of inputs:
0x00, 0x00, 0x00, 0x01,
// txID:
0xf1, 0xe1, 0xd1, 0xc1, 0xb1, 0xa1, 0x91, 0x81,
0x71, 0x61, 0x51, 0x41, 0x31, 0x21, 0x11, 0x01,
0xf0, 0xe0, 0xd0, 0xc0, 0xb0, 0xa0, 0x90, 0x80,
0x70, 0x60, 0x50, 0x40, 0x30, 0x20, 0x10, 0x00,
// utxoIndex:
0x00, 0x00, 0x00, 0x05,
// assetID:
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
// input:
0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
0x07, 0x5b, 0xcd, 0x15, 0x00, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07,
// Memo length:
0x00, 0x00, 0x00, 0x04,
// Memo:
0x00, 0x01, 0x02, 0x03,
// name:
0x00, 0x10, 0x56, 0x6f, 0x6c, 0x61, 0x74, 0x69,
0x6c, 0x69, 0x74, 0x79, 0x20, 0x49, 0x6e, 0x64,
0x65, 0x78,
// symbol:
0x00, 0x03, 0x56, 0x49, 0x58,
// denomination:
0x02,
// number of InitialStates:
0x00, 0x00, 0x00, 0x01,
// InitialStates[0]:
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x30, 0x39, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xd4, 0x31, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x02, 0x51, 0x02, 0x5c, 0x61,
0xfb, 0xcf, 0xc0, 0x78, 0xf6, 0x93, 0x34, 0xf8,
0x34, 0xbe, 0x6d, 0xd2, 0x6d, 0x55, 0xa9, 0x55,
0xc3, 0x34, 0x41, 0x28, 0xe0, 0x60, 0x12, 0x8e,
0xde, 0x35, 0x23, 0xa2, 0x4a, 0x46, 0x1c, 0x89,
0x43, 0xab, 0x08, 0x59,
// number of credentials:
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee,
0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa,
0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0x88, 0x88, 0x88, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11,
0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x07, 0x00,
0x00, 0x00, 0x39, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xd4, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x51, 0x02, 0x5c, 0x61, 0xfb, 0xcf,
0xc0, 0x78, 0xf6, 0x93, 0x34, 0xf8, 0x34, 0xbe, 0x6d, 0xd2, 0x6d, 0x55, 0xa9, 0x55, 0xc3, 0x34,
0x41, 0x28, 0xe0, 0x60, 0x12, 0x8e, 0xde, 0x35, 0x23, 0xa2, 0x4a, 0x46, 0x1c, 0x89, 0x43, 0xab,
0x08, 0x59, 0x01, 0x00, 0x00, 0x00, 0xf1, 0xe1, 0xd1, 0xc1, 0xb1, 0xa1, 0x91, 0x81, 0x71, 0x61,
0x51, 0x41, 0x31, 0x21, 0x11, 0x01, 0xf0, 0xe0, 0xd0, 0xc0, 0xb0, 0xa0, 0x90, 0x80, 0x70, 0x60,
0x50, 0x40, 0x30, 0x20, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15,
0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x05, 0x00, 0x00, 0x00, 0x15, 0xcd,
0x5b, 0x07, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00,
0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x10, 0x00, 0x56, 0x6f, 0x6c, 0x61,
0x74, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x20, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x03, 0x00, 0x56, 0x49,
0x58, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00,
0x00, 0x00, 0x39, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xd4, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x51, 0x02, 0x5c, 0x61, 0xfb, 0xcf,
0xc0, 0x78, 0xf6, 0x93, 0x34, 0xf8, 0x34, 0xbe, 0x6d, 0xd2, 0x6d, 0x55, 0xa9, 0x55, 0xc3, 0x34,
0x41, 0x28, 0xe0, 0x60, 0x12, 0x8e, 0xde, 0x35, 0x23, 0xa2, 0x4a, 0x46, 0x1c, 0x89, 0x43, 0xab,
0x08, 0x59, 0x00, 0x00, 0x00, 0x00,
}
tx := &Tx{Unsigned: &CreateAssetTx{
@@ -209,119 +158,29 @@ func TestCreateAssetTxSerializationAgain(t *testing.T) {
require := require.New(t)
expected := []byte{
// Codec version:
0x00, 0x00,
// txID:
0x00, 0x00, 0x00, 0x01,
// networkID:
0x00, 0x00, 0x01, 0x71, // 369 = UnitTestID
// chainID:
0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// number of outs:
0x00, 0x00, 0x00, 0x03,
// output[0]:
// assetID:
0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// fxID:
0x00, 0x00, 0x00, 0x07,
// secp256k1 Transferable Output:
// amount: 20 * KiloLux = 20,000,000,000 (6-decimal)
0x00, 0x00, 0x00, 0x04, 0xa8, 0x17, 0xc8, 0x00,
// locktime:
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold:
0x00, 0x00, 0x00, 0x01,
// number of addresses
0x00, 0x00, 0x00, 0x01,
// address[0]
0xfc, 0xed, 0xa8, 0xf9, 0x0f, 0xcb, 0x5d, 0x30,
0x61, 0x4b, 0x99, 0xd7, 0x9f, 0xc4, 0xba, 0xa2,
0x93, 0x07, 0x76, 0x26,
// output[1]:
// assetID:
0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// fxID:
0x00, 0x00, 0x00, 0x07,
// secp256k1 Transferable Output:
// amount: 20 * KiloLux = 20,000,000,000 (6-decimal)
0x00, 0x00, 0x00, 0x04, 0xa8, 0x17, 0xc8, 0x00,
// locktime:
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold:
0x00, 0x00, 0x00, 0x01,
// number of addresses:
0x00, 0x00, 0x00, 0x01,
// address[0]:
0x6e, 0xad, 0x69, 0x3c, 0x17, 0xab, 0xb1, 0xbe,
0x42, 0x2b, 0xb5, 0x0b, 0x30, 0xb9, 0x71, 0x1f,
0xf9, 0x8d, 0x66, 0x7e,
// output[2]:
// assetID:
0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// fxID:
0x00, 0x00, 0x00, 0x07,
// secp256k1 Transferable Output:
// amount: 20 * KiloLux = 20,000,000,000 (6-decimal)
0x00, 0x00, 0x00, 0x04, 0xa8, 0x17, 0xc8, 0x00,
// locktime:
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold:
0x00, 0x00, 0x00, 0x01,
// number of addresses:
0x00, 0x00, 0x00, 0x01,
// address[0]:
0xf2, 0x42, 0x08, 0x46, 0x87, 0x6e, 0x69, 0xf4,
0x73, 0xdd, 0xa2, 0x56, 0x17, 0x29, 0x67, 0xe9,
0x92, 0xf0, 0xee, 0x31,
// number of inputs:
0x00, 0x00, 0x00, 0x00,
// Memo length:
0x00, 0x00, 0x00, 0x04,
// Memo:
0x00, 0x01, 0x02, 0x03,
// name length:
0x00, 0x04,
// name:
'n', 'a', 'm', 'e',
// symbol length:
0x00, 0x04,
// symbol:
's', 'y', 'm', 'b',
// denomination
0x00,
// number of initial states:
0x00, 0x00, 0x00, 0x01,
// fx index:
0x00, 0x00, 0x00, 0x00,
// number of outputs:
0x00, 0x00, 0x00, 0x01,
// fxID:
0x00, 0x00, 0x00, 0x06,
// secp256k1 Mint Output:
// locktime:
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// threshold:
0x00, 0x00, 0x00, 0x01,
// number of addresses:
0x00, 0x00, 0x00, 0x01,
// address[0]:
0xfc, 0xed, 0xa8, 0xf9, 0x0f, 0xcb, 0x5d, 0x30,
0x61, 0x4b, 0x99, 0xd7, 0x9f, 0xc4, 0xba, 0xa2,
0x93, 0x07, 0x76, 0x26,
// number of credentials:
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x02,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00,
0x00, 0x00, 0x00, 0xc8, 0x17, 0xa8, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xed, 0xa8, 0xf9, 0x0f, 0xcb,
0x5d, 0x30, 0x61, 0x4b, 0x99, 0xd7, 0x9f, 0xc4, 0xba, 0xa2, 0x93, 0x07, 0x76, 0x26, 0x01, 0x02,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00,
0x00, 0x00, 0x00, 0xc8, 0x17, 0xa8, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6e, 0xad, 0x69, 0x3c, 0x17, 0xab,
0xb1, 0xbe, 0x42, 0x2b, 0xb5, 0x0b, 0x30, 0xb9, 0x71, 0x1f, 0xf9, 0x8d, 0x66, 0x7e, 0x01, 0x02,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00,
0x00, 0x00, 0x00, 0xc8, 0x17, 0xa8, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf2, 0x42, 0x08, 0x46, 0x87, 0x6e,
0x69, 0xf4, 0x73, 0xdd, 0xa2, 0x56, 0x17, 0x29, 0x67, 0xe9, 0x92, 0xf0, 0xee, 0x31, 0x00, 0x00,
0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x00, 0x6e, 0x61, 0x6d, 0x65,
0x04, 0x00, 0x73, 0x79, 0x6d, 0x62, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xed, 0xa8, 0xf9, 0x0f, 0xcb, 0x5d, 0x30, 0x61,
0x4b, 0x99, 0xd7, 0x9f, 0xc4, 0xba, 0xa2, 0x93, 0x07, 0x76, 0x26, 0x00, 0x00, 0x00, 0x00,
}
unsignedTx := &CreateAssetTx{
+14 -51
View File
@@ -20,55 +20,18 @@ func TestExportTxSerialization(t *testing.T) {
require := require.New(t)
expected := []byte{
// Codec version:
0x00, 0x00,
// txID:
0x00, 0x00, 0x00, 0x04,
// networkID:
0x00, 0x00, 0x00, 0x02,
// blockchainID:
0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee,
0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc,
0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa,
0x99, 0x99, 0x99, 0x99, 0x88, 0x88, 0x88, 0x88,
// number of outs:
0x00, 0x00, 0x00, 0x00,
// number of inputs:
0x00, 0x00, 0x00, 0x01,
// utxoID:
0x0f, 0x2f, 0x4f, 0x6f, 0x8e, 0xae, 0xce, 0xee,
0x0d, 0x2d, 0x4d, 0x6d, 0x8c, 0xac, 0xcc, 0xec,
0x0b, 0x2b, 0x4b, 0x6b, 0x8a, 0xaa, 0xca, 0xea,
0x09, 0x29, 0x49, 0x69, 0x88, 0xa8, 0xc8, 0xe8,
// output index
0x00, 0x00, 0x00, 0x00,
// assetID:
0x1f, 0x3f, 0x5f, 0x7f, 0x9e, 0xbe, 0xde, 0xfe,
0x1d, 0x3d, 0x5d, 0x7d, 0x9c, 0xbc, 0xdc, 0xfc,
0x1b, 0x3b, 0x5b, 0x7b, 0x9a, 0xba, 0xda, 0xfa,
0x19, 0x39, 0x59, 0x79, 0x98, 0xb8, 0xd8, 0xf8,
// input:
// input ID:
0x00, 0x00, 0x00, 0x05,
// amount:
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe8,
// num sig indices:
0x00, 0x00, 0x00, 0x01,
// sig index[0]:
0x00, 0x00, 0x00, 0x00,
// Memo length:
0x00, 0x00, 0x00, 0x04,
// Memo:
0x00, 0x01, 0x02, 0x03,
// Destination Chain ID:
0x1f, 0x8f, 0x9f, 0x0f, 0x1e, 0x8e, 0x9e, 0x0e,
0x2d, 0x7d, 0xad, 0xfd, 0x2c, 0x7c, 0xac, 0xfc,
0x3b, 0x6b, 0xbb, 0xeb, 0x3a, 0x6a, 0xba, 0xea,
0x49, 0x59, 0xc9, 0xd9, 0x48, 0x58, 0xc8, 0xd8,
// number of exported outs:
0x00, 0x00, 0x00, 0x00,
// number of credentials:
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee,
0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa,
0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x0f, 0x2f, 0x4f, 0x6f, 0x8e, 0xae, 0xce, 0xee, 0x0d, 0x2d, 0x4d, 0x6d, 0x8c, 0xac,
0xcc, 0xec, 0x0b, 0x2b, 0x4b, 0x6b, 0x8a, 0xaa, 0xca, 0xea, 0x09, 0x29, 0x49, 0x69, 0x88, 0xa8,
0xc8, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x5f, 0x7f, 0x9e, 0xbe, 0xde, 0xfe, 0x1d, 0x3d,
0x5d, 0x7d, 0x9c, 0xbc, 0xdc, 0xfc, 0x1b, 0x3b, 0x5b, 0x7b, 0x9a, 0xba, 0xda, 0xfa, 0x19, 0x39,
0x59, 0x79, 0x98, 0xb8, 0xd8, 0xf8, 0x05, 0x00, 0x00, 0x00, 0xe8, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01,
0x02, 0x03, 0x1f, 0x8f, 0x9f, 0x0f, 0x1e, 0x8e, 0x9e, 0x0e, 0x2d, 0x7d, 0xad, 0xfd, 0x2c, 0x7c,
0xac, 0xfc, 0x3b, 0x6b, 0xbb, 0xeb, 0x3a, 0x6a, 0xba, 0xea, 0x49, 0x59, 0xc9, 0xd9, 0x48, 0x58,
0xc8, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
}
tx := &Tx{Unsigned: &ExportTx{
@@ -116,7 +79,7 @@ func TestExportTxSerialization(t *testing.T) {
require.NoError(err)
require.NoError(tx.Initialize(parser.Codec()))
require.Equal("2PKJE4TrKYpgynBFCpNPpV3GHK7d9QTgrL5mpYG6abHKDvNBG3", tx.ID().String())
require.Equal("218sX5RECzRWffe1JKGET72KsUhAGJAuPe8tAe2s8PLCJrAeqZ", tx.ID().String())
result := tx.Bytes()
require.Equal(expected, result)
@@ -177,7 +140,7 @@ func TestExportTxSerialization(t *testing.T) {
{keys[0], keys[0]},
},
))
require.Equal("2oG52e7Cb7XF1yUzv3pRFndAypgbpswWRcSAKD5SH5VgaiTm5D", tx.ID().String())
require.Equal("2XWcfypBSo6rhikT9hYvvk6YwJvoaYKrHrK1DLjGpPPxyFuNtE", tx.ID().String())
// there are two credentials
expected[len(expected)-1] = 0x02
+14 -51
View File
@@ -20,55 +20,18 @@ func TestImportTxSerialization(t *testing.T) {
require := require.New(t)
expected := []byte{
// Codec version
0x00, 0x00,
// txID:
0x00, 0x00, 0x00, 0x03,
// networkID:
0x00, 0x00, 0x00, 0x02,
// blockchainID:
0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee,
0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc,
0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa,
0x99, 0x99, 0x99, 0x99, 0x88, 0x88, 0x88, 0x88,
// number of base outs:
0x00, 0x00, 0x00, 0x00,
// number of base inputs:
0x00, 0x00, 0x00, 0x00,
// Memo length:
0x00, 0x00, 0x00, 0x04,
// Memo:
0x00, 0x01, 0x02, 0x03,
// Source Chain ID:
0x1f, 0x8f, 0x9f, 0x0f, 0x1e, 0x8e, 0x9e, 0x0e,
0x2d, 0x7d, 0xad, 0xfd, 0x2c, 0x7c, 0xac, 0xfc,
0x3b, 0x6b, 0xbb, 0xeb, 0x3a, 0x6a, 0xba, 0xea,
0x49, 0x59, 0xc9, 0xd9, 0x48, 0x58, 0xc8, 0xd8,
// number of inputs:
0x00, 0x00, 0x00, 0x01,
// utxoID:
0x0f, 0x2f, 0x4f, 0x6f, 0x8e, 0xae, 0xce, 0xee,
0x0d, 0x2d, 0x4d, 0x6d, 0x8c, 0xac, 0xcc, 0xec,
0x0b, 0x2b, 0x4b, 0x6b, 0x8a, 0xaa, 0xca, 0xea,
0x09, 0x29, 0x49, 0x69, 0x88, 0xa8, 0xc8, 0xe8,
// output index
0x00, 0x00, 0x00, 0x00,
// assetID:
0x1f, 0x3f, 0x5f, 0x7f, 0x9e, 0xbe, 0xde, 0xfe,
0x1d, 0x3d, 0x5d, 0x7d, 0x9c, 0xbc, 0xdc, 0xfc,
0x1b, 0x3b, 0x5b, 0x7b, 0x9a, 0xba, 0xda, 0xfa,
0x19, 0x39, 0x59, 0x79, 0x98, 0xb8, 0xd8, 0xf8,
// input:
// input ID:
0x00, 0x00, 0x00, 0x05,
// amount:
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe8,
// num sig indices:
0x00, 0x00, 0x00, 0x01,
// sig index[0]:
0x00, 0x00, 0x00, 0x00,
// number of credentials:
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee,
0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa,
0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x1f, 0x8f, 0x9f, 0x0f, 0x1e, 0x8e,
0x9e, 0x0e, 0x2d, 0x7d, 0xad, 0xfd, 0x2c, 0x7c, 0xac, 0xfc, 0x3b, 0x6b, 0xbb, 0xeb, 0x3a, 0x6a,
0xba, 0xea, 0x49, 0x59, 0xc9, 0xd9, 0x48, 0x58, 0xc8, 0xd8, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x2f,
0x4f, 0x6f, 0x8e, 0xae, 0xce, 0xee, 0x0d, 0x2d, 0x4d, 0x6d, 0x8c, 0xac, 0xcc, 0xec, 0x0b, 0x2b,
0x4b, 0x6b, 0x8a, 0xaa, 0xca, 0xea, 0x09, 0x29, 0x49, 0x69, 0x88, 0xa8, 0xc8, 0xe8, 0x00, 0x00,
0x00, 0x00, 0x1f, 0x3f, 0x5f, 0x7f, 0x9e, 0xbe, 0xde, 0xfe, 0x1d, 0x3d, 0x5d, 0x7d, 0x9c, 0xbc,
0xdc, 0xfc, 0x1b, 0x3b, 0x5b, 0x7b, 0x9a, 0xba, 0xda, 0xfa, 0x19, 0x39, 0x59, 0x79, 0x98, 0xb8,
0xd8, 0xf8, 0x05, 0x00, 0x00, 0x00, 0xe8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
}
tx := &Tx{Unsigned: &ImportTx{
@@ -116,7 +79,7 @@ func TestImportTxSerialization(t *testing.T) {
require.NoError(err)
require.NoError(tx.Initialize(parser.Codec()))
require.Equal("9wdPb5rsThXYLX4WxkNeyYrNMfDE5cuWLgifSjxKiA2dCmgCZ", tx.ID().String())
require.Equal("tSexDDwyJnwDsjkP8Eam2ecKKuvcNZFiHkrXHbhK141DTdZoS", tx.ID().String())
result := tx.Bytes()
require.Equal(expected, result)
@@ -177,7 +140,7 @@ func TestImportTxSerialization(t *testing.T) {
{keys[0], keys[0]},
},
))
require.Equal("pCW7sVBytzdZ1WrqzGY1DvA2S9UaMr72xpUMxVyx1QHBARNYx", tx.ID().String())
require.Equal("Uv77K7265Um1dTQhZJXfVGGPPMPwtJf8RpQqw4pDg2AZysEzD", tx.ID().String())
// there are two credentials
expected[len(expected)-1] = 0x02
+5 -16
View File
@@ -28,22 +28,11 @@ func TestInitialStateVerifySerialization(t *testing.T) {
require.NoError(m.RegisterCodec(CodecVersion, c))
expected := []byte{
// Codec version:
0x00, 0x00,
// fxID:
0x00, 0x00, 0x00, 0x00,
// num outputs:
0x00, 0x00, 0x00, 0x01,
// output:
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x30, 0x39, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xd4, 0x31, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x02, 0x51, 0x02, 0x5c, 0x61,
0xfb, 0xcf, 0xc0, 0x78, 0xf6, 0x93, 0x34, 0xf8,
0x34, 0xbe, 0x6d, 0xd2, 0x6d, 0x55, 0xa9, 0x55,
0xc3, 0x34, 0x41, 0x28, 0xe0, 0x60, 0x12, 0x8e,
0xde, 0x35, 0x23, 0xa2, 0x4a, 0x46, 0x1c, 0x89,
0x43, 0xab, 0x08, 0x59,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x30,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x51, 0x02, 0x5c, 0x61, 0xfb, 0xcf, 0xc0, 0x78, 0xf6, 0x93,
0x34, 0xf8, 0x34, 0xbe, 0x6d, 0xd2, 0x6d, 0x55, 0xa9, 0x55, 0xc3, 0x34, 0x41, 0x28, 0xe0, 0x60,
0x12, 0x8e, 0xde, 0x35, 0x23, 0xa2, 0x4a, 0x46, 0x1c, 0x89, 0x43, 0xab, 0x08, 0x59,
}
is := &InitialState{