From 93d1cbf2081d9839d332b70529efa5a4da545582 Mon Sep 17 00:00:00 2001 From: Ekaterina Lebedeva Date: Mon, 31 Jul 2023 13:25:43 +0300 Subject: [PATCH] [#1] Create an example contract Contract has PutNumber and GetNumber methods Signed-off-by: Ekaterina Lebedeva --- impulse/config.yml | 3 +++ impulse/contract.go | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 impulse/config.yml create mode 100644 impulse/contract.go diff --git a/impulse/config.yml b/impulse/config.yml new file mode 100644 index 0000000..ca6ff2a --- /dev/null +++ b/impulse/config.yml @@ -0,0 +1,3 @@ +name: "Example" +safemethods: [] +supportedstandards: [] diff --git a/impulse/contract.go b/impulse/contract.go new file mode 100644 index 0000000..47f376d --- /dev/null +++ b/impulse/contract.go @@ -0,0 +1,35 @@ +package contract + +import ( + "github.com/nspcc-dev/neo-go/pkg/interop/storage" +) + +// Prefixes used for contract data storage. +const ( + // prefixNumber contains map from the key to stored number. + prefixNumber byte = 0x00 +) + +const ( + keySize = 5 +) + +func GetNumber(key []byte) int { + if len(key) != keySize { + panic("Invalid key size") + } + ctx := storage.GetContext() + num := storage.Get(ctx, append([]byte{prefixNumber}, key...)) + if num == nil { + panic("Cannot get number") + } + return num.(int) +} + +func PutNumber(key []byte, num int) { + if len(key) != keySize { + panic("Invalid key size") + } + ctx := storage.GetContext() + storage.Put(ctx, append([]byte{prefixNumber}, key...), num) +}