diff --git a/CHANGELOG.md b/CHANGELOG.md index 8248a499f5..1e04fed041 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,8 @@ Changelog for NeoFS Node ### Removed ### Updated +- neofs-contract dependency to 0.20.0 (#2872) +- NeoGo dependency to 0.106.3 (#2872) ### Updating from v0.42.1 diff --git a/cmd/neofs-adm/internal/modules/morph/remove_node.go b/cmd/neofs-adm/internal/modules/morph/remove_node.go index a81582b244..9ffa756667 100644 --- a/cmd/neofs-adm/internal/modules/morph/remove_node.go +++ b/cmd/neofs-adm/internal/modules/morph/remove_node.go @@ -8,7 +8,7 @@ import ( "github.com/nspcc-dev/neo-go/pkg/io" "github.com/nspcc-dev/neo-go/pkg/smartcontract/callflag" "github.com/nspcc-dev/neo-go/pkg/vm/emit" - netmapcontract "github.com/nspcc-dev/neofs-contract/contracts/netmap" + "github.com/nspcc-dev/neofs-contract/rpc/netmap" "github.com/nspcc-dev/neofs-contract/rpc/nns" "github.com/spf13/cobra" "github.com/spf13/viper" @@ -47,7 +47,7 @@ func removeNodesCmd(cmd *cobra.Command, args []string) error { bw := io.NewBufBinWriter() for i := range nodeKeys { emit.AppCall(bw.BinWriter, nmHash, "updateStateIR", callflag.All, - int64(netmapcontract.NodeStateOffline), nodeKeys[i].Bytes()) + netmap.NodeStateOffline, nodeKeys[i].Bytes()) } if err := emitNewEpochCall(bw, wCtx, nmHash); err != nil { diff --git a/cmd/neofs-node/container.go b/cmd/neofs-node/container.go index feeaf35929..bfa1fbb388 100644 --- a/cmd/neofs-node/container.go +++ b/cmd/neofs-node/container.go @@ -11,7 +11,7 @@ import ( containerV2 "github.com/nspcc-dev/neofs-api-go/v2/container" containerGRPC "github.com/nspcc-dev/neofs-api-go/v2/container/grpc" - containercontract "github.com/nspcc-dev/neofs-contract/contracts/container" + containerrpc "github.com/nspcc-dev/neofs-contract/rpc/container" "github.com/nspcc-dev/neofs-node/pkg/core/client" containerCore "github.com/nspcc-dev/neofs-node/pkg/core/container" netmapCore "github.com/nspcc-dev/neofs-node/pkg/core/netmap" @@ -133,7 +133,7 @@ func initContainerService(c *cfg) { key: pubKey, } - loadAccumulator := loadstorage.New(containercontract.CleanupDelta) + loadAccumulator := loadstorage.New(containerrpc.CleanupDelta) addNewEpochAsyncNotificationHandler(c, func(e event.Event) { ev := e.(netmapEv.NewEpoch) diff --git a/contracts/00-nns.manifest.json b/contracts/00-nns.manifest.json deleted file mode 100755 index e83ced466b..0000000000 --- a/contracts/00-nns.manifest.json +++ /dev/null @@ -1 +0,0 @@ -{"name":"NameService","abi":{"methods":[{"name":"_initialize","offset":0,"parameters":[],"returntype":"Void","safe":false},{"name":"_deploy","offset":32,"parameters":[{"name":"data","type":"Any"},{"name":"isUpdate","type":"Boolean"}],"returntype":"Void","safe":false},{"name":"addRecord","offset":3236,"parameters":[{"name":"name","type":"String"},{"name":"typ","type":"Integer"},{"name":"data","type":"String"}],"returntype":"Void","safe":false},{"name":"balanceOf","offset":976,"parameters":[{"name":"owner","type":"Hash160"}],"returntype":"Integer","safe":true},{"name":"decimals","offset":791,"parameters":[],"returntype":"Integer","safe":true},{"name":"deleteRecords","offset":3460,"parameters":[{"name":"name","type":"String"},{"name":"typ","type":"Integer"}],"returntype":"Void","safe":false},{"name":"getAllRecords","offset":3704,"parameters":[{"name":"name","type":"String"}],"returntype":"InteropInterface","safe":true},{"name":"getPrice","offset":1427,"parameters":[],"returntype":"Integer","safe":true},{"name":"getRecords","offset":3376,"parameters":[{"name":"name","type":"String"},{"name":"typ","type":"Integer"}],"returntype":"Array","safe":true},{"name":"isAvailable","offset":1461,"parameters":[{"name":"name","type":"String"}],"returntype":"Boolean","safe":true},{"name":"ownerOf","offset":813,"parameters":[{"name":"tokenID","type":"ByteArray"}],"returntype":"Hash160","safe":true},{"name":"properties","offset":883,"parameters":[{"name":"tokenID","type":"ByteArray"}],"returntype":"Map","safe":true},{"name":"register","offset":1722,"parameters":[{"name":"name","type":"String"},{"name":"owner","type":"Hash160"},{"name":"email","type":"String"},{"name":"refresh","type":"Integer"},{"name":"retry","type":"Integer"},{"name":"expire","type":"Integer"},{"name":"ttl","type":"Integer"}],"returntype":"Boolean","safe":false},{"name":"registerTLD","offset":2397,"parameters":[{"name":"name","type":"String"},{"name":"email","type":"String"},{"name":"refresh","type":"Integer"},{"name":"retry","type":"Integer"},{"name":"expire","type":"Integer"},{"name":"ttl","type":"Integer"}],"returntype":"Void","safe":false},{"name":"renew","offset":2610,"parameters":[{"name":"name","type":"String"}],"returntype":"Integer","safe":false},{"name":"resolve","offset":3642,"parameters":[{"name":"name","type":"String"},{"name":"typ","type":"Integer"}],"returntype":"Array","safe":true},{"name":"roots","offset":1321,"parameters":[],"returntype":"InteropInterface","safe":true},{"name":"setAdmin","offset":2821,"parameters":[{"name":"name","type":"String"},{"name":"admin","type":"Hash160"}],"returntype":"Void","safe":false},{"name":"setPrice","offset":1349,"parameters":[{"name":"price","type":"Integer"}],"returntype":"Void","safe":false},{"name":"setRecord","offset":2996,"parameters":[{"name":"name","type":"String"},{"name":"typ","type":"Integer"},{"name":"id","type":"Integer"},{"name":"data","type":"String"}],"returntype":"Void","safe":false},{"name":"symbol","offset":785,"parameters":[],"returntype":"String","safe":true},{"name":"tokens","offset":1052,"parameters":[],"returntype":"InteropInterface","safe":true},{"name":"tokensOf","offset":1081,"parameters":[{"name":"owner","type":"Hash160"}],"returntype":"InteropInterface","safe":true},{"name":"totalSupply","offset":797,"parameters":[],"returntype":"Integer","safe":true},{"name":"transfer","offset":1143,"parameters":[{"name":"to","type":"Hash160"},{"name":"tokenID","type":"ByteArray"},{"name":"data","type":"Any"}],"returntype":"Boolean","safe":false},{"name":"update","offset":698,"parameters":[{"name":"nef","type":"ByteArray"},{"name":"manifest","type":"String"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"updateSOA","offset":2731,"parameters":[{"name":"name","type":"String"},{"name":"email","type":"String"},{"name":"refresh","type":"Integer"},{"name":"retry","type":"Integer"},{"name":"expire","type":"Integer"},{"name":"ttl","type":"Integer"}],"returntype":"Void","safe":false},{"name":"version","offset":793,"parameters":[],"returntype":"Integer","safe":true}],"events":[{"name":"Transfer","parameters":[{"name":"from","type":"Hash160"},{"name":"to","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"tokenId","type":"ByteArray"}]}]},"features":{},"groups":[],"permissions":[{"contract":"0xfffdc93764dbaddd97c48f252a53ea4643faa3fd","methods":["update"]},{"contract":"*","methods":["onNEP11Payment"]}],"supportedstandards":["NEP-11"],"trusts":[],"extra":null} \ No newline at end of file diff --git a/contracts/00-nns.nef b/contracts/00-nns.nef deleted file mode 100755 index 793e7ad730..0000000000 Binary files a/contracts/00-nns.nef and /dev/null differ diff --git a/contracts/01-proxy.manifest.json b/contracts/01-proxy.manifest.json deleted file mode 100755 index cb27a21ea1..0000000000 --- a/contracts/01-proxy.manifest.json +++ /dev/null @@ -1 +0,0 @@ -{"name":"NeoFS Notary Proxy","abi":{"methods":[{"name":"_deploy","offset":0,"parameters":[{"name":"data","type":"Any"},{"name":"isUpdate","type":"Boolean"}],"returntype":"Void","safe":false},{"name":"onNEP17Payment","offset":314,"parameters":[{"name":"from","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"update","offset":472,"parameters":[{"name":"script","type":"ByteArray"},{"name":"manifest","type":"ByteArray"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"verify","offset":601,"parameters":[],"returntype":"Boolean","safe":true},{"name":"version","offset":644,"parameters":[],"returntype":"Integer","safe":true}],"events":[]},"features":{},"groups":[],"permissions":[{"contract":"*","methods":["update"]}],"supportedstandards":[],"trusts":[],"extra":null} \ No newline at end of file diff --git a/contracts/01-proxy.nef b/contracts/01-proxy.nef deleted file mode 100755 index 76be041d1a..0000000000 Binary files a/contracts/01-proxy.nef and /dev/null differ diff --git a/contracts/02-audit.manifest.json b/contracts/02-audit.manifest.json deleted file mode 100755 index 6a71f553d2..0000000000 --- a/contracts/02-audit.manifest.json +++ /dev/null @@ -1 +0,0 @@ -{"name":"NeoFS Audit","abi":{"methods":[{"name":"_deploy","offset":0,"parameters":[{"name":"data","type":"Any"},{"name":"isUpdate","type":"Boolean"}],"returntype":"Void","safe":false},{"name":"get","offset":832,"parameters":[{"name":"id","type":"ByteArray"}],"returntype":"ByteArray","safe":true},{"name":"list","offset":857,"parameters":[],"returntype":"Array","safe":true},{"name":"listByCID","offset":923,"parameters":[{"name":"epoch","type":"Integer"},{"name":"cid","type":"ByteArray"}],"returntype":"Array","safe":true},{"name":"listByEpoch","offset":891,"parameters":[{"name":"epoch","type":"Integer"}],"returntype":"Array","safe":true},{"name":"listByNode","offset":966,"parameters":[{"name":"epoch","type":"Integer"},{"name":"cid","type":"ByteArray"},{"name":"key","type":"PublicKey"}],"returntype":"Array","safe":true},{"name":"put","offset":685,"parameters":[{"name":"rawAuditResult","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"update","offset":556,"parameters":[{"name":"script","type":"ByteArray"},{"name":"manifest","type":"ByteArray"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"version","offset":1044,"parameters":[],"returntype":"Integer","safe":true}],"events":[]},"features":{},"groups":[],"permissions":[{"contract":"*","methods":["update"]}],"supportedstandards":[],"trusts":[],"extra":null} \ No newline at end of file diff --git a/contracts/02-audit.nef b/contracts/02-audit.nef deleted file mode 100755 index 2f2c15f909..0000000000 Binary files a/contracts/02-audit.nef and /dev/null differ diff --git a/contracts/03-netmap.manifest.json b/contracts/03-netmap.manifest.json deleted file mode 100755 index f72489e947..0000000000 --- a/contracts/03-netmap.manifest.json +++ /dev/null @@ -1 +0,0 @@ -{"name":"NeoFS Netmap","abi":{"methods":[{"name":"_initialize","offset":0,"parameters":[],"returntype":"Void","safe":false},{"name":"_deploy","offset":93,"parameters":[{"name":"data","type":"Any"},{"name":"isUpdate","type":"Boolean"}],"returntype":"Void","safe":false},{"name":"addPeer","offset":1782,"parameters":[{"name":"nodeInfo","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"addPeerIR","offset":1737,"parameters":[{"name":"nodeInfo","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"config","offset":3243,"parameters":[{"name":"key","type":"ByteArray"}],"returntype":"Any","safe":true},{"name":"epoch","offset":2423,"parameters":[],"returntype":"Integer","safe":true},{"name":"innerRingList","offset":1692,"parameters":[],"returntype":"Array","safe":true},{"name":"lastEpochBlock","offset":2462,"parameters":[],"returntype":"Integer","safe":false},{"name":"listConfig","offset":3329,"parameters":[],"returntype":"Array","safe":true},{"name":"netmap","offset":2501,"parameters":[],"returntype":"Array","safe":true},{"name":"netmapCandidates","offset":2583,"parameters":[],"returntype":"Array","safe":true},{"name":"newEpoch","offset":2132,"parameters":[{"name":"epochNum","type":"Integer"}],"returntype":"Void","safe":false},{"name":"setConfig","offset":3261,"parameters":[{"name":"id","type":"ByteArray"},{"name":"key","type":"ByteArray"},{"name":"val","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"snapshot","offset":2599,"parameters":[{"name":"diff","type":"Integer"}],"returntype":"Array","safe":true},{"name":"snapshotByEpoch","offset":3195,"parameters":[{"name":"epoch","type":"Integer"}],"returntype":"Array","safe":true},{"name":"subscribeForNewEpoch","offset":3411,"parameters":[{"name":"contract","type":"Hash160"}],"returntype":"Void","safe":false},{"name":"update","offset":1562,"parameters":[{"name":"script","type":"ByteArray"},{"name":"manifest","type":"ByteArray"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"updateSnapshotCount","offset":2753,"parameters":[{"name":"count","type":"Integer"}],"returntype":"Void","safe":false},{"name":"updateState","offset":2027,"parameters":[{"name":"state","type":"Integer"},{"name":"publicKey","type":"PublicKey"}],"returntype":"Void","safe":false},{"name":"updateStateIR","offset":2103,"parameters":[{"name":"state","type":"Integer"},{"name":"publicKey","type":"PublicKey"}],"returntype":"Void","safe":false},{"name":"version","offset":3797,"parameters":[],"returntype":"Integer","safe":true}],"events":[{"name":"AddPeerSuccess","parameters":[{"name":"publicKey","type":"PublicKey"}]},{"name":"UpdateStateSuccess","parameters":[{"name":"publicKey","type":"PublicKey"},{"name":"state","type":"Integer"}]},{"name":"NewEpoch","parameters":[{"name":"epoch","type":"Integer"}]},{"name":"NewEpochSubscription","parameters":[{"name":"contract","type":"Hash160"}]}]},"features":{},"groups":[],"permissions":[{"contract":"*","methods":["update","newEpoch"]}],"supportedstandards":[],"trusts":[],"extra":null} \ No newline at end of file diff --git a/contracts/03-netmap.nef b/contracts/03-netmap.nef deleted file mode 100755 index 7124384e83..0000000000 Binary files a/contracts/03-netmap.nef and /dev/null differ diff --git a/contracts/04-balance.manifest.json b/contracts/04-balance.manifest.json deleted file mode 100755 index d7b33b05d8..0000000000 --- a/contracts/04-balance.manifest.json +++ /dev/null @@ -1 +0,0 @@ -{"name":"NeoFS Balance","abi":{"methods":[{"name":"_initialize","offset":0,"parameters":[],"returntype":"Void","safe":false},{"name":"_deploy","offset":93,"parameters":[{"name":"data","type":"Any"},{"name":"isUpdate","type":"Boolean"}],"returntype":"Void","safe":false},{"name":"balanceOf","offset":1432,"parameters":[{"name":"account","type":"Hash160"}],"returntype":"Integer","safe":true},{"name":"burn","offset":1965,"parameters":[{"name":"from","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"txDetails","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"decimals","offset":1410,"parameters":[],"returntype":"Integer","safe":true},{"name":"lock","offset":1578,"parameters":[{"name":"txDetails","type":"ByteArray"},{"name":"from","type":"Hash160"},{"name":"to","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"until","type":"Integer"}],"returntype":"Void","safe":false},{"name":"mint","offset":1844,"parameters":[{"name":"to","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"txDetails","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"newEpoch","offset":1715,"parameters":[{"name":"epochNum","type":"Integer"}],"returntype":"Void","safe":false},{"name":"symbol","offset":1406,"parameters":[],"returntype":"String","safe":true},{"name":"totalSupply","offset":1414,"parameters":[],"returntype":"Integer","safe":true},{"name":"transfer","offset":1451,"parameters":[{"name":"from","type":"Hash160"},{"name":"to","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"data","type":"Any"}],"returntype":"Boolean","safe":false},{"name":"transferX","offset":1475,"parameters":[{"name":"from","type":"Hash160"},{"name":"to","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"details","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"update","offset":1275,"parameters":[{"name":"script","type":"ByteArray"},{"name":"manifest","type":"ByteArray"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"version","offset":2116,"parameters":[],"returntype":"Integer","safe":true}],"events":[{"name":"Lock","parameters":[{"name":"txID","type":"ByteArray"},{"name":"from","type":"Hash160"},{"name":"to","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"until","type":"Integer"}]},{"name":"Transfer","parameters":[{"name":"from","type":"Hash160"},{"name":"to","type":"Hash160"},{"name":"amount","type":"Integer"}]},{"name":"TransferX","parameters":[{"name":"from","type":"Hash160"},{"name":"to","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"details","type":"ByteArray"}]}]},"features":{},"groups":[],"permissions":[{"contract":"*","methods":["update","subscribeForNewEpoch"]}],"supportedstandards":["NEP-17"],"trusts":[],"extra":null} \ No newline at end of file diff --git a/contracts/04-balance.nef b/contracts/04-balance.nef deleted file mode 100755 index 4b4ce26fe8..0000000000 Binary files a/contracts/04-balance.nef and /dev/null differ diff --git a/contracts/05-reputation.manifest.json b/contracts/05-reputation.manifest.json deleted file mode 100755 index ae73a8f5c3..0000000000 --- a/contracts/05-reputation.manifest.json +++ /dev/null @@ -1 +0,0 @@ -{"name":"NeoFS Reputation","abi":{"methods":[{"name":"_initialize","offset":0,"parameters":[],"returntype":"Void","safe":false},{"name":"_deploy","offset":35,"parameters":[{"name":"data","type":"Any"},{"name":"isUpdate","type":"Boolean"}],"returntype":"Void","safe":false},{"name":"get","offset":914,"parameters":[{"name":"epoch","type":"Integer"},{"name":"peerID","type":"ByteArray"}],"returntype":"Array","safe":true},{"name":"getByID","offset":930,"parameters":[{"name":"id","type":"ByteArray"}],"returntype":"Array","safe":true},{"name":"listByEpoch","offset":1020,"parameters":[{"name":"epoch","type":"Integer"}],"returntype":"Array","safe":true},{"name":"put","offset":804,"parameters":[{"name":"epoch","type":"Integer"},{"name":"peerID","type":"ByteArray"},{"name":"value","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"update","offset":670,"parameters":[{"name":"script","type":"ByteArray"},{"name":"manifest","type":"ByteArray"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"version","offset":1098,"parameters":[],"returntype":"Integer","safe":false}],"events":[]},"features":{},"groups":[],"permissions":[{"contract":"*","methods":["update"]}],"supportedstandards":[],"trusts":[],"extra":null} \ No newline at end of file diff --git a/contracts/05-reputation.nef b/contracts/05-reputation.nef deleted file mode 100755 index fb46a1d26f..0000000000 Binary files a/contracts/05-reputation.nef and /dev/null differ diff --git a/contracts/06-neofsid.manifest.json b/contracts/06-neofsid.manifest.json deleted file mode 100755 index 02d2d78f3d..0000000000 --- a/contracts/06-neofsid.manifest.json +++ /dev/null @@ -1 +0,0 @@ -{"name":"NeoFS ID","abi":{"methods":[{"name":"_initialize","offset":0,"parameters":[],"returntype":"Void","safe":false},{"name":"_deploy","offset":35,"parameters":[{"name":"data","type":"Any"},{"name":"isUpdate","type":"Boolean"}],"returntype":"Void","safe":false},{"name":"addKey","offset":857,"parameters":[{"name":"owner","type":"ByteArray"},{"name":"keys","type":"Array"}],"returntype":"Void","safe":false},{"name":"key","offset":1269,"parameters":[{"name":"owner","type":"ByteArray"}],"returntype":"Array","safe":true},{"name":"removeKey","offset":1062,"parameters":[{"name":"owner","type":"ByteArray"},{"name":"keys","type":"Array"}],"returntype":"Void","safe":false},{"name":"update","offset":726,"parameters":[{"name":"script","type":"ByteArray"},{"name":"manifest","type":"ByteArray"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"version","offset":1340,"parameters":[],"returntype":"Integer","safe":true}],"events":[]},"features":{},"groups":[],"permissions":[{"contract":"*","methods":["update"]}],"supportedstandards":[],"trusts":[],"extra":null} \ No newline at end of file diff --git a/contracts/06-neofsid.nef b/contracts/06-neofsid.nef deleted file mode 100755 index 39f00c276b..0000000000 Binary files a/contracts/06-neofsid.nef and /dev/null differ diff --git a/contracts/07-container.manifest.json b/contracts/07-container.manifest.json deleted file mode 100755 index 387a77b723..0000000000 --- a/contracts/07-container.manifest.json +++ /dev/null @@ -1 +0,0 @@ -{"name":"NeoFS Container","abi":{"methods":[{"name":"_initialize","offset":0,"parameters":[],"returntype":"Void","safe":false},{"name":"_deploy","offset":83,"parameters":[{"name":"data","type":"Any"},{"name":"isUpdate","type":"Boolean"}],"returntype":"Void","safe":false},{"name":"alias","offset":3554,"parameters":[{"name":"cid","type":"ByteArray"}],"returntype":"String","safe":true},{"name":"containersOf","offset":3694,"parameters":[{"name":"owner","type":"ByteArray"}],"returntype":"InteropInterface","safe":true},{"name":"count","offset":3649,"parameters":[],"returntype":"Integer","safe":true},{"name":"delete","offset":3145,"parameters":[{"name":"containerID","type":"ByteArray"},{"name":"signature","type":"Signature"},{"name":"token","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"eACL","offset":4106,"parameters":[{"name":"containerID","type":"ByteArray"}],"returntype":"Array","safe":true},{"name":"get","offset":3441,"parameters":[{"name":"containerID","type":"ByteArray"}],"returntype":"Array","safe":true},{"name":"getContainerSize","offset":4366,"parameters":[{"name":"id","type":"ByteArray"}],"returntype":"Array","safe":true},{"name":"iterateAllContainerSizes","offset":4739,"parameters":[{"name":"epoch","type":"Integer"}],"returntype":"InteropInterface","safe":true},{"name":"iterateContainerSizes","offset":4641,"parameters":[{"name":"epoch","type":"Integer"},{"name":"cid","type":"Hash256"}],"returntype":"InteropInterface","safe":true},{"name":"list","offset":3748,"parameters":[{"name":"owner","type":"ByteArray"}],"returntype":"Array","safe":true},{"name":"listContainerSizes","offset":4480,"parameters":[{"name":"epoch","type":"Integer"}],"returntype":"Array","safe":true},{"name":"newEpoch","offset":4791,"parameters":[{"name":"epochNum","type":"Integer"}],"returntype":"Void","safe":false},{"name":"onNEP11Payment","offset":1670,"parameters":[{"name":"a","type":"Hash160"},{"name":"b","type":"Integer"},{"name":"c","type":"ByteArray"},{"name":"d","type":"Any"}],"returntype":"Void","safe":false},{"name":"owner","offset":3503,"parameters":[{"name":"containerID","type":"ByteArray"}],"returntype":"ByteArray","safe":true},{"name":"put","offset":2061,"parameters":[{"name":"container","type":"ByteArray"},{"name":"signature","type":"Signature"},{"name":"publicKey","type":"PublicKey"},{"name":"token","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"putContainerSize","offset":4164,"parameters":[{"name":"epoch","type":"Integer"},{"name":"cid","type":"ByteArray"},{"name":"usedSize","type":"Integer"},{"name":"pubKey","type":"PublicKey"}],"returntype":"Void","safe":false},{"name":"putNamed","offset":2077,"parameters":[{"name":"container","type":"ByteArray"},{"name":"signature","type":"Signature"},{"name":"publicKey","type":"PublicKey"},{"name":"token","type":"ByteArray"},{"name":"name","type":"String"},{"name":"zone","type":"String"}],"returntype":"Void","safe":false},{"name":"setEACL","offset":3844,"parameters":[{"name":"eACL","type":"ByteArray"},{"name":"signature","type":"Signature"},{"name":"publicKey","type":"PublicKey"},{"name":"token","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"startContainerEstimation","offset":4821,"parameters":[{"name":"epoch","type":"Integer"}],"returntype":"Void","safe":false},{"name":"stopContainerEstimation","offset":4902,"parameters":[{"name":"epoch","type":"Integer"}],"returntype":"Void","safe":false},{"name":"update","offset":1928,"parameters":[{"name":"script","type":"ByteArray"},{"name":"manifest","type":"ByteArray"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"version","offset":4982,"parameters":[],"returntype":"Integer","safe":true}],"events":[{"name":"PutSuccess","parameters":[{"name":"containerID","type":"Hash256"},{"name":"publicKey","type":"PublicKey"}]},{"name":"DeleteSuccess","parameters":[{"name":"containerID","type":"ByteArray"}]},{"name":"SetEACLSuccess","parameters":[{"name":"containerID","type":"ByteArray"},{"name":"publicKey","type":"PublicKey"}]},{"name":"StartEstimation","parameters":[{"name":"epoch","type":"Integer"}]},{"name":"StopEstimation","parameters":[{"name":"epoch","type":"Integer"}]}]},"features":{},"groups":[],"permissions":[{"contract":"*","methods":["update","addKey","transferX","register","registerTLD","addRecord","deleteRecords","subscribeForNewEpoch"]}],"supportedstandards":[],"trusts":[],"extra":null} \ No newline at end of file diff --git a/contracts/07-container.nef b/contracts/07-container.nef deleted file mode 100755 index 384241bba5..0000000000 Binary files a/contracts/07-container.nef and /dev/null differ diff --git a/contracts/08-alphabet.manifest.json b/contracts/08-alphabet.manifest.json deleted file mode 100755 index 3059096ee5..0000000000 --- a/contracts/08-alphabet.manifest.json +++ /dev/null @@ -1 +0,0 @@ -{"name":"NeoFS Alphabet","abi":{"methods":[{"name":"_initialize","offset":0,"parameters":[],"returntype":"Void","safe":false},{"name":"_deploy","offset":35,"parameters":[{"name":"data","type":"Any"},{"name":"isUpdate","type":"Boolean"}],"returntype":"Void","safe":false},{"name":"emit","offset":2810,"parameters":[],"returntype":"Void","safe":false},{"name":"gas","offset":2631,"parameters":[],"returntype":"Integer","safe":true},{"name":"name","offset":3441,"parameters":[],"returntype":"String","safe":true},{"name":"neo","offset":2645,"parameters":[],"returntype":"Integer","safe":true},{"name":"onNEP17Payment","offset":1127,"parameters":[{"name":"from","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"update","offset":2499,"parameters":[{"name":"script","type":"ByteArray"},{"name":"manifest","type":"ByteArray"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"version","offset":3457,"parameters":[],"returntype":"Integer","safe":true},{"name":"vote","offset":3269,"parameters":[{"name":"epoch","type":"Integer"},{"name":"candidates","type":"Array"}],"returntype":"Void","safe":false}],"events":[]},"features":{},"groups":[],"permissions":[{"contract":"*","methods":["update","transfer","vote"]}],"supportedstandards":[],"trusts":[],"extra":null} \ No newline at end of file diff --git a/contracts/08-alphabet.nef b/contracts/08-alphabet.nef deleted file mode 100755 index 387398427c..0000000000 Binary files a/contracts/08-alphabet.nef and /dev/null differ diff --git a/contracts/contracts.go b/contracts/contracts.go deleted file mode 100644 index 85548e2773..0000000000 --- a/contracts/contracts.go +++ /dev/null @@ -1,162 +0,0 @@ -/* -Package contracts embeds compiled Neo contracts and provides access to them. -*/ -package contracts - -import ( - "embed" - "encoding/json" - "errors" - "fmt" - "io/fs" - "sort" - "strconv" - "strings" - - "github.com/nspcc-dev/neo-go/pkg/io" - "github.com/nspcc-dev/neo-go/pkg/smartcontract/manifest" - "github.com/nspcc-dev/neo-go/pkg/smartcontract/nef" -) - -// Contract groups information about Neo contract stored in the current package. -type Contract struct { - NEF nef.File - Manifest manifest.Manifest -} - -//go:embed *.nef *.manifest.json -var _fs embed.FS - -// Read reads compiled contracts stored in the package sorted numerically. -// File schema: -// - compiled executables (NEF) are named by pattern 'N-C.nef' -// - JSON-encoded manifests are named by pattern 'N-C.manifest.json' -// -// where C is the contract name (a-z) and N is the serial number of the contract -// starting from 0. Leading zeros are ignored (except zero sequence -// corresponding to N=0). -// -// If NEF file exists, corresponding manifest file must exist. If manifest -// file is presented without corresponding NEF file, the contract is ignored. -// -// Read fails if contract files has invalid name or format. -func Read() ([]Contract, error) { - return read(_fs) -} - -const nefFileSuffix = ".nef" - -var ( - errInvalidFilename = errors.New("invalid file name") - errDuplicatedContract = errors.New("duplicated contract") - errInvalidNEF = errors.New("invalid NEF") - errInvalidManifest = errors.New("invalid manifest") -) - -type numberedContract struct { - i int - c Contract -} - -type numberedContracts []numberedContract - -func (x numberedContracts) Len() int { return len(x) } -func (x numberedContracts) Less(i, j int) bool { return x[i].i < x[j].i } -func (x numberedContracts) Swap(i, j int) { x[i], x[j] = x[j], x[i] } - -// read same as Read by allows to override source fs.FS. -func read(_fs fs.FS) ([]Contract, error) { - nefFiles, err := fs.Glob(_fs, "*"+nefFileSuffix) - if err != nil { - return nil, fmt.Errorf("match files with suffix %s", nefFileSuffix) - } - - cs := make(numberedContracts, 0, len(nefFiles)) - - for i := range nefFiles { - prefix := strings.TrimSuffix(nefFiles[i], nefFileSuffix) - if prefix == "" { - return nil, fmt.Errorf("%w: missing prefix '%s'", errInvalidFilename, nefFiles[i]) - } - - hyphenInd := strings.IndexByte(prefix, '-') - if hyphenInd < 0 { - return nil, fmt.Errorf("%w: missing hyphen '%s'", errInvalidFilename, nefFiles[i]) - } - - name := prefix[hyphenInd+1:] - if len(name) == 0 { - return nil, fmt.Errorf("%w: missing name '%s'", errInvalidFilename, nefFiles[i]) - } - - for i := range name { - if name[i] < 'a' || name[i] > 'z' { - return nil, fmt.Errorf("%w: unsupported char in name %c", errInvalidFilename, name[i]) - } - } - - var ind int - - if noZerosPrefix := strings.TrimLeft(prefix[:hyphenInd], "0"); len(noZerosPrefix) > 0 { - ind, err = strconv.Atoi(noZerosPrefix) - if err != nil { - return nil, fmt.Errorf("%w: invalid prefix of file name '%s' (expected serial number)", errInvalidFilename, nefFiles[i]) - } else if ind < 0 { - return nil, fmt.Errorf("%w: negative serial number in file name '%s'", errInvalidFilename, nefFiles[i]) - } - } - - for i := range cs { - if cs[i].i == ind { - return nil, fmt.Errorf("%w: more than one file with serial number #%d", errDuplicatedContract, ind) - } - } - - c, err := readContractFromFiles(_fs, prefix) - if err != nil { - return nil, fmt.Errorf("read contract #%d: %w", ind, err) - } - - cs = append(cs, numberedContract{ - i: ind, - c: c, - }) - } - - sort.Sort(cs) - - res := make([]Contract, len(cs)) - - for i := range cs { - res[i] = cs[i].c - } - - return res, nil -} - -func readContractFromFiles(_fs fs.FS, filePrefix string) (c Contract, err error) { - fNEF, err := _fs.Open(filePrefix + nefFileSuffix) - if err != nil { - return c, fmt.Errorf("open file containing contract NEF: %w", err) - } - defer fNEF.Close() - - fManifest, err := _fs.Open(filePrefix + ".manifest.json") - if err != nil { - return c, fmt.Errorf("open file containing contract NEF: %w", err) - } - defer fManifest.Close() - - bReader := io.NewBinReaderFromIO(fNEF) - c.NEF.DecodeBinary(bReader) - if bReader.Err != nil { - return c, fmt.Errorf("%w: %w", errInvalidNEF, bReader.Err) - } - - err = json.NewDecoder(fManifest).Decode(&c.Manifest) - if err != nil { - return c, fmt.Errorf("%w: %w", errInvalidManifest, err) - } - - return -} diff --git a/contracts/contracts_test.go b/contracts/contracts_test.go deleted file mode 100644 index afadb0e71f..0000000000 --- a/contracts/contracts_test.go +++ /dev/null @@ -1,130 +0,0 @@ -package contracts - -import ( - "crypto/rand" - "encoding/json" - "testing" - "testing/fstest" - - "github.com/nspcc-dev/neo-go/pkg/smartcontract/manifest" - "github.com/nspcc-dev/neo-go/pkg/smartcontract/nef" - "github.com/stretchr/testify/require" -) - -func TestReadRepo(t *testing.T) { - _, err := Read() - require.NoError(t, err) -} - -func TestReadOrder(t *testing.T) { - _nef0, bNEF0 := anyValidNEF(t) - _manifest0, jManifest0 := anyValidManifest(t, "first") - _nef1, bNEF1 := anyValidNEF(t) - _manifest1, jManifest1 := anyValidManifest(t, "second") - _nef11, bNEF11 := anyValidNEF(t) - _manifest11, jManifest11 := anyValidManifest(t, "twelfth") - - _fs := fstest.MapFS{ - "00-hello.nef": {Data: bNEF0}, - "00-hello.manifest.json": {Data: jManifest0}, - "01-world.nef": {Data: bNEF1}, - "01-world.manifest.json": {Data: jManifest1}, - "11-bye.nef": {Data: bNEF11}, - "11-bye.manifest.json": {Data: jManifest11}, - } - - cs, err := read(_fs) - require.NoError(t, err) - require.Len(t, cs, 3) - - require.Equal(t, _nef0, cs[0].NEF) - require.Equal(t, _manifest0, cs[0].Manifest) - require.Equal(t, _nef1, cs[1].NEF) - require.Equal(t, _manifest1, cs[1].Manifest) - require.Equal(t, _nef11, cs[2].NEF) - require.Equal(t, _manifest11, cs[2].Manifest) -} - -func TestReadInvalidFilenames(t *testing.T) { - _fs := fstest.MapFS{} - - _, err := read(_fs) - require.NoError(t, err) - - for _, invalidName := range []string{ - "hello.nef", - "-.nef", - "-0.nef", - "0-.nef", - "0-_.nef", - "0-1.nef", - ".nef", - } { - _fs[invalidName] = &fstest.MapFile{} - _, err = read(_fs) - require.ErrorIs(t, err, errInvalidFilename, invalidName) - delete(_fs, invalidName) - } -} - -func TestReadDuplicatedContract(t *testing.T) { - _, bNEF := anyValidNEF(t) - _, jManifest := anyValidManifest(t, "some name") - - _fs := fstest.MapFS{ - "01-hello.nef": {Data: bNEF}, - "01-hello.manifest.json": {Data: jManifest}, - "001-hello.nef": {Data: bNEF}, - "001-hello.manifest.json": {Data: jManifest}, - } - - _, err := read(_fs) - require.ErrorIs(t, err, errDuplicatedContract) -} - -func TestReadInvalidFormat(t *testing.T) { - _fs := fstest.MapFS{} - - _, validNEF := anyValidNEF(t) - _, validManifest := anyValidManifest(t, "zero") - - _fs["00-hello.nef"] = &fstest.MapFile{Data: validNEF} - _fs["00-hello.manifest.json"] = &fstest.MapFile{Data: validManifest} - - _, err := read(_fs) - require.NoError(t, err, errInvalidNEF) - - _fs["00-hello.nef"] = &fstest.MapFile{Data: []byte("not a NEF")} - _fs["00-hello.manifest.json"] = &fstest.MapFile{Data: validManifest} - - _, err = read(_fs) - require.ErrorIs(t, err, errInvalidNEF) - - _fs["00-hello.nef"] = &fstest.MapFile{Data: validNEF} - _fs["00-hello.manifest.json"] = &fstest.MapFile{Data: []byte("not a manifest")} - - _, err = read(_fs) - require.ErrorIs(t, err, errInvalidManifest) -} - -func anyValidNEF(tb testing.TB) (nef.File, []byte) { - script := make([]byte, 32) - rand.Read(script) - - _nef, err := nef.NewFile(script) - require.NoError(tb, err) - - bNEF, err := _nef.Bytes() - require.NoError(tb, err) - - return *_nef, bNEF -} - -func anyValidManifest(tb testing.TB, name string) (manifest.Manifest, []byte) { - _manifest := manifest.NewManifest(name) - - jManifest, err := json.Marshal(_manifest) - require.NoError(tb, err) - - return *_manifest, jManifest -} diff --git a/go.mod b/go.mod index b1df1f40c6..cac4449df0 100644 --- a/go.mod +++ b/go.mod @@ -15,9 +15,9 @@ require ( github.com/multiformats/go-multiaddr v0.12.2 github.com/nspcc-dev/hrw/v2 v2.0.1 github.com/nspcc-dev/locode-db v0.6.0 - github.com/nspcc-dev/neo-go v0.106.2 + github.com/nspcc-dev/neo-go v0.106.3 github.com/nspcc-dev/neofs-api-go/v2 v2.14.1-0.20240305074711-35bc78d84dc4 - github.com/nspcc-dev/neofs-contract v0.19.2-0.20240506202632-e78d64ecdfc2 + github.com/nspcc-dev/neofs-contract v0.20.0 github.com/nspcc-dev/neofs-sdk-go v1.0.0-rc.12 github.com/nspcc-dev/tzhash v1.8.0 github.com/olekukonko/tablewriter v0.0.5 @@ -47,7 +47,7 @@ require ( github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/consensys/bavard v0.1.13 // indirect github.com/consensys/gnark-crypto v0.12.2-0.20231013160410-1f65e75b6dfb // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.3 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect @@ -72,7 +72,7 @@ require ( github.com/multiformats/go-varint v0.0.7 // indirect github.com/nspcc-dev/dbft v0.2.0 // indirect github.com/nspcc-dev/go-ordered-json v0.0.0-20240301084351-0246b013f8b2 // indirect - github.com/nspcc-dev/neo-go/pkg/interop v0.0.0-20240521091047-78685785716d // indirect + github.com/nspcc-dev/neo-go/pkg/interop v0.0.0-20240729160116-d8e3e57f88f2 // indirect github.com/nspcc-dev/rfc6979 v0.2.1 // indirect github.com/pelletier/go-toml/v2 v2.1.1 // indirect github.com/pierrec/lz4 v2.6.1+incompatible // indirect @@ -90,7 +90,8 @@ require ( github.com/subosito/gotenv v1.6.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20210305035536-64b5b1c73954 // indirect github.com/twmb/murmur3 v1.1.8 // indirect - github.com/urfave/cli v1.22.14 // indirect + github.com/urfave/cli/v2 v2.27.2 // indirect + github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.21.0 // indirect golang.org/x/text v0.14.0 // indirect diff --git a/go.sum b/go.sum index 68088f680e..efc571159c 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,3 @@ -github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20221202181307-76fa05c21b12 h1:npHgfD4Tl2WJS3AJaMUi5ynGDPUBfkg3U3fCzDyXZ+4= github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20221202181307-76fa05c21b12/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -19,9 +18,9 @@ github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/Yj github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= github.com/consensys/gnark-crypto v0.12.2-0.20231013160410-1f65e75b6dfb h1:f0BMgIjhZy4lSRHCXFbQst85f5agZAjtDMixQqBWNpc= github.com/consensys/gnark-crypto v0.12.2-0.20231013160410-1f65e75b6dfb/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= @@ -128,14 +127,14 @@ github.com/nspcc-dev/hrw/v2 v2.0.1 h1:CxYUkBeJvNfMEn2lHhrV6FjY8pZPceSxXUtMVq0BUO github.com/nspcc-dev/hrw/v2 v2.0.1/go.mod h1:iZAs5hT2q47EGq6AZ0FjaUI6ggntOi7vrY4utfzk5VA= github.com/nspcc-dev/locode-db v0.6.0 h1:EdRUug+sL0EMLZgucLETD6bnegKjyEZh+D5x4r5VMvY= github.com/nspcc-dev/locode-db v0.6.0/go.mod h1:mJLXdzlcRucr3AFUvf5fJH+rFv1bJuU85e1jtDHDTz8= -github.com/nspcc-dev/neo-go v0.106.2 h1:KXSJ2J5Oacc7LrX3r4jvnC8ihKqHs5NB21q4f2S3r9o= -github.com/nspcc-dev/neo-go v0.106.2/go.mod h1:Ojwfx3/lv0VTeEHMpQ17g0wTnXcCSoFQVq5GEeCZmGo= -github.com/nspcc-dev/neo-go/pkg/interop v0.0.0-20240521091047-78685785716d h1:Vcb7YkZuUSSIC+WF/xV3UDfHbAxZgyT2zGleJP3Ig5k= -github.com/nspcc-dev/neo-go/pkg/interop v0.0.0-20240521091047-78685785716d/go.mod h1:/vrbWSHc7YS1KSYhVOyyeucXW/e+1DkVBOgnBEXUCeY= +github.com/nspcc-dev/neo-go v0.106.3 h1:HEyhgkjQY+HfBzotMJ12xx2VuOUphkngZ4kEkjvXDtE= +github.com/nspcc-dev/neo-go v0.106.3/go.mod h1:3vEwJ2ld12N7HRGCaH/l/7EwopplC/+8XdIdPDNmD/M= +github.com/nspcc-dev/neo-go/pkg/interop v0.0.0-20240729160116-d8e3e57f88f2 h1:tvPkeqnIeBFhM1b1Iwwi0jJiuoxkY4Xbk8mP3W1YVUY= +github.com/nspcc-dev/neo-go/pkg/interop v0.0.0-20240729160116-d8e3e57f88f2/go.mod h1:/vrbWSHc7YS1KSYhVOyyeucXW/e+1DkVBOgnBEXUCeY= github.com/nspcc-dev/neofs-api-go/v2 v2.14.1-0.20240305074711-35bc78d84dc4 h1:arN0Ypn+jawZpu1BND7TGRn44InAVIqKygndsx0y2no= github.com/nspcc-dev/neofs-api-go/v2 v2.14.1-0.20240305074711-35bc78d84dc4/go.mod h1:7Tm1NKEoUVVIUlkVwFrPh7GG5+Lmta2m7EGr4oVpBd8= -github.com/nspcc-dev/neofs-contract v0.19.2-0.20240506202632-e78d64ecdfc2 h1:VT9/vs92xth7c2PIxiGt1NIK77VK2kjSFqLMWmMY/pc= -github.com/nspcc-dev/neofs-contract v0.19.2-0.20240506202632-e78d64ecdfc2/go.mod h1:5nBFjgF2/SNpEty5oZzfTLck3YCSHLgnL4Tlv2xo54c= +github.com/nspcc-dev/neofs-contract v0.20.0 h1:ARE/3mSN+P9qi/10NBsf7QyPiYrvnxeEgYUN13vHRlo= +github.com/nspcc-dev/neofs-contract v0.20.0/go.mod h1:YxtKYE/5cMNiqwWcQWzeizbB9jizauLni+p8wXxfhsQ= github.com/nspcc-dev/neofs-sdk-go v1.0.0-rc.12 h1:mdxtlSU2I4oVZ/7AXTLKyz8uUPbDWikZw4DM8gvrddA= github.com/nspcc-dev/neofs-sdk-go v1.0.0-rc.12/go.mod h1:JdsEM1qgNukrWqgOBDChcYp8oY4XUzidcKaxY4hNJvQ= github.com/nspcc-dev/rfc6979 v0.2.1 h1:8wWxkamHWFmO790GsewSoKUSJjVnL1fmdRpokU/RgRM= @@ -209,8 +208,10 @@ github.com/syndtr/goleveldb v1.0.1-0.20210305035536-64b5b1c73954 h1:xQdMZ1WLrgkk github.com/syndtr/goleveldb v1.0.1-0.20210305035536-64b5b1c73954/go.mod h1:u2MKkTVTVJWe5D1rCvame8WqhBd88EuIwODJZ1VHCPM= github.com/twmb/murmur3 v1.1.8 h1:8Yt9taO/WN3l08xErzjeschgZU2QSrwm1kclYq+0aRg= github.com/twmb/murmur3 v1.1.8/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ= -github.com/urfave/cli v1.22.14 h1:ebbhrRiGK2i4naQJr+1Xj92HXZCrK7MsyTS/ob3HnAk= -github.com/urfave/cli v1.22.14/go.mod h1:X0eDS6pD6Exaclxm99NJ3FiCDRED7vIHpx2mDOHLvkA= +github.com/urfave/cli/v2 v2.27.2 h1:6e0H+AkS+zDckwPCUrZkKX38mRaau4nL2uipkJpbkcI= +github.com/urfave/cli/v2 v2.27.2/go.mod h1:g0+79LmHHATl7DAcHO99smiR/T7uGLw84w8Y42x+4eM= +github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 h1:+qGGcbkzsfDQNPPe9UDgpxAWQrhbbBXOYJFQDq/dtJw= +github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913/go.mod h1:4aEEwZQutDLsQv2Deui4iYQ6DWTxR14g6m8Wv88+Xqk= go.etcd.io/bbolt v1.3.9 h1:8x7aARPEXiXbHmtUwAIv7eV2fQFHrLLavdiJ3uzJXoI= go.etcd.io/bbolt v1.3.9/go.mod h1:zaO32+Ti0PK1ivdPtgMESzuzL2VPoIG1PCQNvOdo/dE= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -294,7 +295,6 @@ gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWD gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/pkg/innerring/contracts.go b/pkg/innerring/contracts.go index 4568a956ee..f8af6a3f99 100644 --- a/pkg/innerring/contracts.go +++ b/pkg/innerring/contracts.go @@ -9,8 +9,8 @@ import ( "github.com/nspcc-dev/neo-go/pkg/neorpc" "github.com/nspcc-dev/neo-go/pkg/util" + embeddedcontracts "github.com/nspcc-dev/neofs-contract/contracts" "github.com/nspcc-dev/neofs-contract/deploy" - embeddedcontracts "github.com/nspcc-dev/neofs-node/contracts" "github.com/nspcc-dev/neofs-node/pkg/morph/client" "github.com/nspcc-dev/neofs-node/pkg/util/glagolitsa" "github.com/spf13/cast" @@ -207,7 +207,7 @@ func parseContract(ctx *nnsContext, _logger *zap.Logger, cfg *viper.Viper, morph } func readEmbeddedContracts(deployPrm *deploy.Prm) error { - cs, err := embeddedcontracts.Read() + cs, err := embeddedcontracts.GetFS() if err != nil { return fmt.Errorf("read embedded contracts: %w", err) } diff --git a/pkg/morph/client/container/get.go b/pkg/morph/client/container/get.go index a2542e7fed..94c5c3f27f 100644 --- a/pkg/morph/client/container/get.go +++ b/pkg/morph/client/container/get.go @@ -5,7 +5,7 @@ import ( "fmt" "strings" - containerContract "github.com/nspcc-dev/neofs-contract/contracts/container" + containerrpc "github.com/nspcc-dev/neofs-contract/rpc/container" containercore "github.com/nspcc-dev/neofs-node/pkg/core/container" "github.com/nspcc-dev/neofs-node/pkg/morph/client" apistatus "github.com/nspcc-dev/neofs-sdk-go/client/status" @@ -45,7 +45,7 @@ func (c *Client) Get(cid []byte) (*containercore.Container, error) { res, err := c.client.TestInvoke(prm) if err != nil { - if strings.Contains(err.Error(), containerContract.NotFoundError) { + if strings.Contains(err.Error(), containerrpc.NotFoundError) { var errNotFound apistatus.ContainerNotFound return nil, errNotFound diff --git a/pkg/morph/client/netmap/netmap.go b/pkg/morph/client/netmap/netmap.go index 52e682e7b2..1899f3faf9 100644 --- a/pkg/morph/client/netmap/netmap.go +++ b/pkg/morph/client/netmap/netmap.go @@ -4,7 +4,7 @@ import ( "fmt" "github.com/nspcc-dev/neo-go/pkg/vm/stackitem" - netmapcontract "github.com/nspcc-dev/neofs-contract/contracts/netmap" + netmaprpc "github.com/nspcc-dev/neofs-contract/rpc/netmap" "github.com/nspcc-dev/neofs-node/pkg/morph/client" "github.com/nspcc-dev/neofs-sdk-go/netmap" ) @@ -102,29 +102,14 @@ func decodeNodeList(itemNodes stackitem.Item) ([]netmap.NodeInfo, error) { } func decodeNodeInfo(dst *netmap.NodeInfo, itemNode stackitem.Item) error { - nodeFields, err := client.ArrayFromStackItem(itemNode) - if err != nil { - return fmt.Errorf("decode item array of node fields: %w", err) - } - - var node netmapcontract.Node - - if len(nodeFields) > 0 { - node.BLOB, err = client.BytesFromStackItem(nodeFields[0]) - if err != nil { - return fmt.Errorf("decode node info BLOB: %w", err) - } - } - - node.State = netmapcontract.NodeStateOnline - - if len(nodeFields) > 1 { - state, err := client.IntFromStackItem(nodeFields[1]) - if err != nil { - return fmt.Errorf("decode integer from 2nd item: %w", err) - } + var ( + err error + node netmaprpc.NetmapNode + ) - node.State = netmapcontract.NodeState(state) + err = node.FromStackItem(itemNode) + if err != nil { + return fmt.Errorf("decode node item: %w", err) } err = dst.Unmarshal(node.BLOB) @@ -132,14 +117,14 @@ func decodeNodeInfo(dst *netmap.NodeInfo, itemNode stackitem.Item) error { return fmt.Errorf("decode node info: %w", err) } - switch node.State { + switch node.State.Int64() { default: return fmt.Errorf("unsupported state %v", node.State) - case netmapcontract.NodeStateOnline: + case netmaprpc.NodeStateOnline.Int64(): dst.SetOnline() - case netmapcontract.NodeStateOffline: + case netmaprpc.NodeStateOffline.Int64(): dst.SetOffline() - case netmapcontract.NodeStateMaintenance: + case netmaprpc.NodeStateMaintenance.Int64(): dst.SetMaintenance() } diff --git a/pkg/morph/client/netmap/update_state.go b/pkg/morph/client/netmap/update_state.go index c06ed501d1..f19a155df4 100644 --- a/pkg/morph/client/netmap/update_state.go +++ b/pkg/morph/client/netmap/update_state.go @@ -2,8 +2,9 @@ package netmap import ( "fmt" + "math/big" - "github.com/nspcc-dev/neofs-contract/contracts/netmap" + "github.com/nspcc-dev/neofs-contract/rpc/netmap" "github.com/nspcc-dev/neofs-node/pkg/morph/client" ) @@ -11,7 +12,7 @@ import ( type UpdatePeerPrm struct { key []byte - state netmap.NodeState + state *big.Int client.InvokePrmOptional } @@ -37,13 +38,13 @@ func (u *UpdatePeerPrm) SetMaintenance() { // UpdatePeerState changes peer status through Netmap contract call. func (c *Client) UpdatePeerState(p UpdatePeerPrm) error { - if p.state == 0 { + if p.state == nil || p.state.Sign() == 0 { p.state = netmap.NodeStateOffline } prm := client.InvokePrm{} prm.SetMethod(updateStateMethod) - prm.SetArgs(int64(p.state), p.key) + prm.SetArgs(p.state, p.key) prm.InvokePrmOptional = p.InvokePrmOptional if err := c.client.Invoke(prm); err != nil { diff --git a/pkg/morph/event/netmap/update_peer.go b/pkg/morph/event/netmap/update_peer.go index 081fde751f..d1ea0860de 100644 --- a/pkg/morph/event/netmap/update_peer.go +++ b/pkg/morph/event/netmap/update_peer.go @@ -5,13 +5,13 @@ import ( "github.com/nspcc-dev/neo-go/pkg/crypto/keys" "github.com/nspcc-dev/neo-go/pkg/network/payload" - "github.com/nspcc-dev/neofs-contract/contracts/netmap" + "github.com/nspcc-dev/neofs-contract/contracts/netmap/nodestate" ) type UpdatePeer struct { publicKey *keys.PublicKey - state netmap.NodeState + state nodestate.Type // For notary notifications only. // Contains raw transactions of notary request. @@ -24,13 +24,13 @@ func (UpdatePeer) MorphEvent() {} // Online returns true if node's state is requested to be switched // to "online". func (s UpdatePeer) Online() bool { - return s.state == netmap.NodeStateOnline + return s.state == nodestate.Online } // Maintenance returns true if node's state is requested to be switched // to "maintenance". func (s UpdatePeer) Maintenance() bool { - return s.state == netmap.NodeStateMaintenance + return s.state == nodestate.Maintenance } func (s UpdatePeer) PublicKey() *keys.PublicKey { @@ -44,13 +44,13 @@ func (s UpdatePeer) NotaryRequest() *payload.P2PNotaryRequest { } func (s *UpdatePeer) decodeState(state int64) error { - switch s.state = netmap.NodeState(state); s.state { + switch s.state = nodestate.Type(state); s.state { default: return fmt.Errorf("unsupported node state %d", state) case - netmap.NodeStateOffline, - netmap.NodeStateOnline, - netmap.NodeStateMaintenance: + nodestate.Offline, + nodestate.Online, + nodestate.Maintenance: return nil } }