Anton Nikiforov
802192cfef
All checks were successful
Vulncheck / Vulncheck (pull_request) Successful in 1m57s
DCO action / DCO (pull_request) Successful in 3m3s
Build / Build Components (1.21) (pull_request) Successful in 5m0s
Build / Build Components (1.20) (pull_request) Successful in 5m6s
Tests and linters / Tests (1.20) (pull_request) Successful in 7m1s
Tests and linters / Staticcheck (pull_request) Successful in 6m55s
Tests and linters / Lint (pull_request) Successful in 7m30s
Tests and linters / Tests (1.21) (pull_request) Successful in 7m53s
Tests and linters / Tests with -race (pull_request) Successful in 8m21s
To avoid conflicts with `util` packages in other imports. Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
39 lines
778 B
Go
39 lines
778 B
Go
package helper
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"github.com/nspcc-dev/neo-go/pkg/smartcontract/manifest"
|
|
"github.com/nspcc-dev/neo-go/pkg/util"
|
|
"github.com/nspcc-dev/neo-go/pkg/wallet"
|
|
)
|
|
|
|
func AddManifestGroup(cw *wallet.Wallet, h util.Uint160, cs *ContractState) error {
|
|
priv := cw.Accounts[0].PrivateKey()
|
|
pub := priv.PublicKey()
|
|
|
|
sig := priv.Sign(h.BytesBE())
|
|
found := false
|
|
|
|
for i := range cs.Manifest.Groups {
|
|
if cs.Manifest.Groups[i].PublicKey.Equal(pub) {
|
|
cs.Manifest.Groups[i].Signature = sig
|
|
found = true
|
|
break
|
|
}
|
|
}
|
|
if !found {
|
|
cs.Manifest.Groups = append(cs.Manifest.Groups, manifest.Group{
|
|
PublicKey: pub,
|
|
Signature: sig,
|
|
})
|
|
}
|
|
|
|
data, err := json.Marshal(cs.Manifest)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
cs.RawManifest = data
|
|
return nil
|
|
}
|