54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
|
package native
|
||
|
|
||
|
import (
|
||
|
"github.com/nspcc-dev/neo-go/pkg/io"
|
||
|
"github.com/nspcc-dev/neo-go/pkg/util"
|
||
|
"github.com/nspcc-dev/neo-go/pkg/vm/stackitem"
|
||
|
)
|
||
|
|
||
|
// BlockedAccounts represents a slice of blocked accounts hashes.
|
||
|
type BlockedAccounts []util.Uint160
|
||
|
|
||
|
// Bytes returns serialized BlockedAccounts.
|
||
|
func (ba *BlockedAccounts) Bytes() []byte {
|
||
|
w := io.NewBufBinWriter()
|
||
|
ba.EncodeBinary(w.BinWriter)
|
||
|
if w.Err != nil {
|
||
|
panic(w.Err)
|
||
|
}
|
||
|
return w.Bytes()
|
||
|
}
|
||
|
|
||
|
// EncodeBinary implements io.Serializable interface.
|
||
|
func (ba *BlockedAccounts) EncodeBinary(w *io.BinWriter) {
|
||
|
w.WriteArray(*ba)
|
||
|
}
|
||
|
|
||
|
// BlockedAccountsFromBytes converts serialized BlockedAccounts to structure.
|
||
|
func BlockedAccountsFromBytes(b []byte) (BlockedAccounts, error) {
|
||
|
ba := new(BlockedAccounts)
|
||
|
if len(b) == 0 {
|
||
|
return *ba, nil
|
||
|
}
|
||
|
r := io.NewBinReaderFromBuf(b)
|
||
|
ba.DecodeBinary(r)
|
||
|
if r.Err != nil {
|
||
|
return nil, r.Err
|
||
|
}
|
||
|
return *ba, nil
|
||
|
}
|
||
|
|
||
|
// DecodeBinary implements io.Serializable interface.
|
||
|
func (ba *BlockedAccounts) DecodeBinary(r *io.BinReader) {
|
||
|
r.ReadArray(ba)
|
||
|
}
|
||
|
|
||
|
// ToStackItem converts BlockedAccounts to stackitem.Item
|
||
|
func (ba *BlockedAccounts) ToStackItem() stackitem.Item {
|
||
|
result := make([]stackitem.Item, len(*ba))
|
||
|
for i, account := range *ba {
|
||
|
result[i] = stackitem.NewByteArray(account.BytesLE())
|
||
|
}
|
||
|
return stackitem.NewArray(result)
|
||
|
}
|