nef: increase version field to 32 bytes

Follow recent C# changes.
This commit is contained in:
Roman Khimov 2020-11-30 11:26:29 +03:00
parent 470e1592d9
commit 1672887123
4 changed files with 6 additions and 9 deletions

Binary file not shown.

View file

@ -57,7 +57,7 @@ type rpcTestCase struct {
} }
const testContractHash = "743ed26f78e29ecd595535b74a943b1f9ccbc444" const testContractHash = "743ed26f78e29ecd595535b74a943b1f9ccbc444"
const deploymentTxHash = "3f81bc99525ed4b1cbb4a3535feadf73176db646a2879aaf975737348a425edc" const deploymentTxHash = "9ecf1273fe0d8868cc024c8270b569a12edd7ea9d675c88554b937134efb03f8"
const genesisBlockHash = "a496577895eb8c227bb866dc44f99f21c0cf06417ca8f2a877cc5d761a50dac0" const genesisBlockHash = "a496577895eb8c227bb866dc44f99f21c0cf06417ca8f2a877cc5d761a50dac0"
const verifyContractHash = "a2eb22340979804cb10cc1add0b8822c201f4d8a" const verifyContractHash = "a2eb22340979804cb10cc1add0b8822c201f4d8a"
@ -1345,7 +1345,7 @@ func checkNep17Balances(t *testing.T, e *executor, acc interface{}) {
}, },
{ {
Asset: e.chain.UtilityTokenHash(), Asset: e.chain.UtilityTokenHash(),
Amount: "80009730770", Amount: "80009698770",
LastUpdated: 7, LastUpdated: 7,
}}, }},
Address: testchain.PrivateKeyByID(0).GetScriptHash().StringLE(), Address: testchain.PrivateKeyByID(0).GetScriptHash().StringLE(),

Binary file not shown.

View file

@ -18,7 +18,7 @@ import (
// +------------+-----------+------------------------------------------------------------+ // +------------+-----------+------------------------------------------------------------+
// | Magic | 4 bytes | Magic header | // | Magic | 4 bytes | Magic header |
// | Compiler | 32 bytes | Compiler used | // | Compiler | 32 bytes | Compiler used |
// | Version | 16 bytes | Compiler version | // | Version | 32 bytes | Compiler version |
// +------------+-----------+------------------------------------------------------------+ // +------------+-----------+------------------------------------------------------------+
// | Script | Var bytes | Var bytes for the payload | // | Script | Var bytes | Var bytes for the payload |
// +------------+-----------+------------------------------------------------------------+ // +------------+-----------+------------------------------------------------------------+
@ -30,10 +30,8 @@ const (
Magic uint32 = 0x3346454E Magic uint32 = 0x3346454E
// MaxScriptLength is the maximum allowed contract script length. // MaxScriptLength is the maximum allowed contract script length.
MaxScriptLength = 1024 * 1024 MaxScriptLength = 1024 * 1024
// compilerFieldSize is the length of `Compiler` File header field in bytes. // compilerFieldSize is the length of `Compiler` and `Version` File header fields in bytes.
compilerFieldSize = 32 compilerFieldSize = 32
// versionFieldSize is the length of `Version` File header field in bytes.
versionFieldSize = 16
) )
// File represents compiled contract file structure according to the NEF3 standard. // File represents compiled contract file structure according to the NEF3 standard.
@ -60,7 +58,7 @@ func NewFile(script []byte) (*File, error) {
}, },
Script: script, Script: script,
} }
if len(config.Version) > versionFieldSize { if len(config.Version) > compilerFieldSize {
return nil, errors.New("too long version") return nil, errors.New("too long version")
} }
file.Checksum = file.CalculateChecksum() file.Checksum = file.CalculateChecksum()
@ -77,7 +75,6 @@ func (h *Header) EncodeBinary(w *io.BinWriter) {
var b = make([]byte, compilerFieldSize) var b = make([]byte, compilerFieldSize)
copy(b, []byte(h.Compiler)) copy(b, []byte(h.Compiler))
w.WriteBytes(b) w.WriteBytes(b)
b = b[:versionFieldSize]
for i := range b { for i := range b {
b[i] = 0 b[i] = 0
} }
@ -98,7 +95,7 @@ func (h *Header) DecodeBinary(r *io.BinReader) {
return r == 0 return r == 0
}) })
h.Compiler = string(buf) h.Compiler = string(buf)
buf = buf[:versionFieldSize] buf = buf[:compilerFieldSize]
r.ReadBytes(buf) r.ReadBytes(buf)
buf = bytes.TrimRightFunc(buf, func(r rune) bool { buf = bytes.TrimRightFunc(buf, func(r rune) bool {
return r == 0 return r == 0