Merge pull request #3505 from nspcc-dev/array-cp

*: Convert slices to arrays instead of `copy` where possible
This commit is contained in:
Anna Shaleva 2024-07-08 11:00:31 +03:00 committed by GitHub
commit 7304b2c7fb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 7 additions and 7 deletions

View file

@ -32,6 +32,8 @@ import (
const ( const (
// DefaultBaseExecFee specifies the default multiplier for opcode and syscall prices. // DefaultBaseExecFee specifies the default multiplier for opcode and syscall prices.
DefaultBaseExecFee = 30 DefaultBaseExecFee = 30
// ContextNonceDataLen is a length of [Context.NonceData] in bytes.
ContextNonceDataLen = 16
) )
// Ledger is the interface to Blockchain required for Context functionality. // Ledger is the interface to Blockchain required for Context functionality.
@ -52,7 +54,7 @@ type Context struct {
Natives []Contract Natives []Contract
Trigger trigger.Type Trigger trigger.Type
Block *block.Block Block *block.Block
NonceData [16]byte NonceData [ContextNonceDataLen]byte
Tx *transaction.Transaction Tx *transaction.Transaction
DAO *dao.Simple DAO *dao.Simple
Notifications []state.NotificationEvent Notifications []state.NotificationEvent
@ -97,7 +99,7 @@ func NewContext(trigger trigger.Type, bc Ledger, d *dao.Simple, baseExecFee, bas
// InitNonceData initializes nonce to be used in `GetRandom` calculations. // InitNonceData initializes nonce to be used in `GetRandom` calculations.
func (ic *Context) InitNonceData() { func (ic *Context) InitNonceData() {
if tx, ok := ic.Container.(*transaction.Transaction); ok { if tx, ok := ic.Container.(*transaction.Transaction); ok {
copy(ic.NonceData[:], tx.Hash().BytesBE()) ic.NonceData = [ContextNonceDataLen]byte(tx.Hash().BytesBE())
} }
if ic.Block != nil { if ic.Block != nil {
nonce := ic.Block.Nonce nonce := ic.Block.Nonce

View file

@ -103,7 +103,7 @@ func GetRandom(ic *interop.Context) error {
} }
res := murmur128(ic.NonceData[:], seed) res := murmur128(ic.NonceData[:], seed)
if !isHF { if !isHF {
copy(ic.NonceData[:], res) ic.NonceData = [interop.ContextNonceDataLen]byte(res)
} }
if !ic.VM.AddGas(ic.BaseExecFee() * price) { if !ic.VM.AddGas(ic.BaseExecFee() * price) {
return errors.New("gas limit exceeded") return errors.New("gas limit exceeded")

View file

@ -50,8 +50,7 @@ func Uint160DecodeBytesBE(b []byte) (u Uint160, err error) {
if len(b) != Uint160Size { if len(b) != Uint160Size {
return u, fmt.Errorf("expected byte size of %d got %d", Uint160Size, len(b)) return u, fmt.Errorf("expected byte size of %d got %d", Uint160Size, len(b))
} }
copy(u[:], b) return Uint160(b), nil
return
} }
// Uint160DecodeBytesLE attempts to decode the given bytes in little-endian // Uint160DecodeBytesLE attempts to decode the given bytes in little-endian

View file

@ -50,8 +50,7 @@ func Uint256DecodeBytesBE(b []byte) (u Uint256, err error) {
if len(b) != Uint256Size { if len(b) != Uint256Size {
return u, fmt.Errorf("expected []byte of size %d got %d", Uint256Size, len(b)) return u, fmt.Errorf("expected []byte of size %d got %d", Uint256Size, len(b))
} }
copy(u[:], b) return Uint256(b), nil
return u, nil
} }
// Uint256DecodeBytesLE attempts to decode the given string (in LE representation) into a Uint256. // Uint256DecodeBytesLE attempts to decode the given string (in LE representation) into a Uint256.