@@ -24,14 +24,21 @@ suite "Stateless: Witness Generation":
2424 ledger = LedgerRef .init (memDB.baseTxFrame (), false , collectWitness = true )
2525 code = hexToSeqByte (" 0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" )
2626 addr1 = address " 0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6"
27+ addr2 = address " 0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec7"
2728 slot1 = 1 .u256
2829 slot2 = 2 .u256
2930 slot3 = 3 .u256
3031
31- test " Get account" :
3232 ledger.setBalance (addr1, 10 .u256)
33+ ledger.setCode (addr1, code)
34+ ledger.setBalance (addr2, 20 .u256)
35+ ledger.setStorage (addr1, slot1, 100 .u256)
36+ ledger.setStorage (addr1, slot2, 200 .u256)
37+ ledger.setStorage (addr1, slot3, 300 .u256)
3338 ledger.persist (clearWitness = true )
3439
40+
41+ test " Get account" :
3542 discard ledger.getBalance (addr1)
3643
3744 let witnessKeys = ledger.getWitnessKeys ()
@@ -46,9 +53,6 @@ suite "Stateless: Witness Generation":
4653 witnessKeys.contains ((Address .copyFrom (witness.keys[0 ]), Opt .none (UInt256 )))
4754
4855 test " Get code" :
49- ledger.setCode (addr1, code)
50- ledger.persist (clearWitness = true )
51-
5256 discard ledger.getCode (addr1)
5357
5458 let witnessKeys = ledger.getWitnessKeys ()
@@ -79,9 +83,6 @@ suite "Stateless: Witness Generation":
7983 witnessKeys.contains ((Address .copyFrom (witness.keys[0 ]), Opt .some (slot1)))
8084
8185 test " Get storage" :
82- ledger.setStorage (addr1, slot1, 20 .u256)
83- ledger.persist (clearWitness = true )
84-
8586 discard ledger.getStorage (addr1, slot1)
8687
8788 let witnessKeys = ledger.getWitnessKeys ()
@@ -97,9 +98,6 @@ suite "Stateless: Witness Generation":
9798 witnessKeys.contains ((Address .copyFrom (witness.keys[0 ]), Opt .some (slot1)))
9899
99100 test " Get committed storage" :
100- ledger.setStorage (addr1, slot1, 20 .u256)
101- ledger.persist (clearWitness = true )
102-
103101 discard ledger.getCommittedStorage (addr1, slot1)
104102
105103 let witnessKeys = ledger.getWitnessKeys ()
@@ -115,12 +113,6 @@ suite "Stateless: Witness Generation":
115113 witnessKeys.contains ((Address .copyFrom (witness.keys[0 ]), Opt .some (slot1)))
116114
117115 test " Get code and storage slots" :
118- ledger.setCode (addr1, code)
119- ledger.setStorage (addr1, slot1, 100 .u256)
120- ledger.setStorage (addr1, slot2, 200 .u256)
121- ledger.setStorage (addr1, slot3, 300 .u256)
122- ledger.persist (clearWitness = true )
123-
124116 discard ledger.getCode (addr1)
125117 discard ledger.getStorage (addr1, slot1)
126118 discard ledger.getStorage (addr1, slot2)
@@ -139,3 +131,22 @@ suite "Stateless: Witness Generation":
139131 witnessKeys.contains ((Address .copyFrom (witness.keys[0 ]), Opt .some (slot1)))
140132 witnessKeys.contains ((Address .copyFrom (witness.keys[0 ]), Opt .some (slot2)))
141133 witnessKeys.contains ((Address .copyFrom (witness.keys[0 ]), Opt .some (slot3)))
134+
135+ test " Order of keys" :
136+ var witnessKeys: WitnessTable
137+ witnessKeys[(addr1, Opt .none (UInt256 ))] = true
138+ witnessKeys[(addr1, Opt .some (slot1))] = false
139+ witnessKeys[(addr2, Opt .none (UInt256 ))] = false
140+ witnessKeys[(addr1, Opt .some (slot2))] = false
141+ witnessKeys[(addr1, Opt .some (slot3))] = false
142+ check witnessKeys.len () == 5
143+
144+ let witness = Witness .build (witnessKeys, ledger.ReadOnlyLedger )
145+
146+ check:
147+ witness.keys.len () == 5
148+ witness.keys[0 ] == addr1.data ()
149+ witness.keys[1 ] == slot1.toBytesBE ()
150+ witness.keys[2 ] == slot2.toBytesBE ()
151+ witness.keys[3 ] == slot3.toBytesBE ()
152+ witness.keys[4 ] == addr2.data ()
0 commit comments