@@ -1832,7 +1832,6 @@ func (n *InternalNode) serializeInternalWithUncompressedCommitment(pointsIdx map
18321832}
18331833
18341834var (
1835- zero24 [24 ]byte
18361835 zero32 [32 ]byte
18371836 EmptyCodeHash , _ = hex .DecodeString ("c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470" )
18381837)
@@ -1845,7 +1844,7 @@ func (n *LeafNode) serializeLeafWithUncompressedCommitments(cBytes, c1Bytes, c2B
18451844 children := make ([]byte , 0 , NodeWidth * LeafValueSize )
18461845 var (
18471846 bitlist [bitlistSize ]byte
1848- isEoA = false // TODO: EoA serialization optimization is broken -- re-enable when fixed.
1847+ isEoA = true
18491848 count , lastIdx int
18501849 )
18511850 for i , v := range n .values {
@@ -1863,29 +1862,17 @@ func (n *LeafNode) serializeLeafWithUncompressedCommitments(cBytes, c1Bytes, c2B
18631862 switch i {
18641863 case 0 :
18651864 // Version should be 0
1866- isEoA = v != nil && bytes .Equal (v , zero32 [:])
1867- case 1 :
1868- // Balance should not be nil
18691865 isEoA = v != nil
1870- case 2 :
1871- // Nonce should have its last 24 bytes set to 0
1872- isEoA = v != nil && bytes .Equal (v [leafNonceSize :], zero24 [:])
1873- case 3 :
1866+ case 1 :
18741867 // Code hash should be the empty code hash
18751868 isEoA = v != nil && bytes .Equal (v , EmptyCodeHash [:])
1876- case 4 :
1877- // Code size must be 0
1878- isEoA = v != nil && bytes .Equal (v , zero32 [:])
18791869 default :
18801870 // All other values must be nil
18811871 isEoA = v == nil
18821872 }
18831873 }
18841874 }
18851875
1886- // TODO: single slot serialization optimization is apparently broken -- force disabling it until is fixed.
1887- count = 256
1888-
18891876 // Create the serialization.
18901877 var result []byte
18911878 switch {
@@ -1894,7 +1881,11 @@ func (n *LeafNode) serializeLeafWithUncompressedCommitments(cBytes, c1Bytes, c2B
18941881 result = buf [:]
18951882 result [0 ] = singleSlotType
18961883 copy (result [leafStemOffset :], n .stem [:StemSize ])
1897- copy (result [leafStemOffset + StemSize :], c1Bytes [:])
1884+ if lastIdx < 128 {
1885+ copy (result [leafStemOffset + StemSize :], c1Bytes [:])
1886+ } else {
1887+ copy (result [leafStemOffset + StemSize :], c2Bytes [:])
1888+ }
18981889 copy (result [leafStemOffset + StemSize + banderwagon .UncompressedSize :], cBytes [:])
18991890 result [leafStemOffset + StemSize + 2 * banderwagon .UncompressedSize ] = byte (lastIdx )
19001891 copy (result [leafStemOffset + StemSize + 2 * banderwagon .UncompressedSize + leafValueIndexSize :], n .values [lastIdx ][:])
@@ -1905,8 +1896,7 @@ func (n *LeafNode) serializeLeafWithUncompressedCommitments(cBytes, c1Bytes, c2B
19051896 copy (result [leafStemOffset :], n .stem [:StemSize ])
19061897 copy (result [leafStemOffset + StemSize :], c1Bytes [:])
19071898 copy (result [leafStemOffset + StemSize + banderwagon .UncompressedSize :], cBytes [:])
1908- copy (result [leafStemOffset + StemSize + 2 * banderwagon .UncompressedSize :], n .values [1 ]) // copy balance
1909- copy (result [leafStemOffset + StemSize + 2 * banderwagon .UncompressedSize + leafBalanceSize :], n .values [2 ][:leafNonceSize ]) // copy nonce
1899+ copy (result [leafStemOffset + StemSize + 2 * banderwagon .UncompressedSize :], n .values [0 ]) // copy basic data
19101900 default :
19111901 result = make ([]byte , nodeTypeSize + StemSize + bitlistSize + 3 * banderwagon .UncompressedSize + len (children ))
19121902 result [0 ] = leafType
0 commit comments