diff --git a/alphabet/alphabet_contract.go b/alphabet/alphabet_contract.go index 01e2d72..2a62847 100644 --- a/alphabet/alphabet_contract.go +++ b/alphabet/alphabet_contract.go @@ -74,7 +74,7 @@ func Neo() int { } func balance(hash string, addr []byte) int { - balance := contract.Call([]byte(hash), "balanceOf", addr) + balance := contract.Call([]byte(hash), "balanceOf", contract.ReadOnly, addr) return balance.(int) } @@ -84,7 +84,7 @@ func irList() []common.IRNode { func currentEpoch() int { netmapContractAddr := storage.Get(ctx, netmapKey).([]byte) - return contract.Call(netmapContractAddr, "epoch").(int) + return contract.Call(netmapContractAddr, "epoch", contract.ReadOnly).(int) } func name() string { @@ -119,7 +119,7 @@ func Emit() bool { contractHash := runtime.GetExecutingScriptHash() neo := balance(neoHash, contractHash) - _ = contract.Call([]byte(neoHash), "transfer", contractHash, contractHash, neo, nil) + _ = contract.Call([]byte(neoHash), "transfer", contract.All, contractHash, contractHash, neo, nil) gas := balance(gasHash, contractHash) gasPerNode := gas * 7 / 8 / len(innerRingKeys) @@ -133,7 +133,7 @@ func Emit() bool { node := innerRingKeys[i] address := contract.CreateStandardAccount(node.PublicKey) - _ = contract.Call([]byte(gasHash), "transfer", contractHash, address, gasPerNode, nil) + _ = contract.Call([]byte(gasHash), "transfer", contract.All, contractHash, address, gasPerNode, nil) } runtime.Log("utility token has been emitted to inner ring nodes") @@ -163,7 +163,7 @@ func Vote(epoch int, candidates [][]byte) { candidate := candidates[index%len(candidates)] address := runtime.GetExecutingScriptHash() - ok := contract.Call([]byte(neoHash), "vote", address, candidate).(bool) + ok := contract.Call([]byte(neoHash), "vote", contract.All, address, candidate).(bool) if ok { runtime.Log(name + ": successfully voted for validator") removeVotes(ctx, id) diff --git a/common/ir.go b/common/ir.go index f0e35da..b27e476 100644 --- a/common/ir.go +++ b/common/ir.go @@ -37,5 +37,5 @@ func InnerRingListViaStorage(ctx storage.Context, key interface{}) []IRNode { // InnerRingList gets list of inner ring through // calling "innerRingList" method of smart contract. func InnerRingList(sc interop.Hash160) []IRNode { - return contract.Call(sc, irListMethod).([]IRNode) + return contract.Call(sc, irListMethod, contract.ReadOnly).([]IRNode) } diff --git a/container/container_contract.go b/container/container_contract.go index e549840..e9d671b 100644 --- a/container/container_contract.go +++ b/container/container_contract.go @@ -99,7 +99,7 @@ func Put(container, signature, publicKey []byte) bool { // check provided key if !isSignedByOwnerKey(container, signature, ownerID, publicKey) { // check keys from NeoFSID - keys := contract.Call(neofsIDContractAddr, "key", ownerID).([][]byte) + keys := contract.Call(neofsIDContractAddr, "key", contract.ReadOnly, ownerID).([][]byte) if !verifySignature(container, signature, keys) { panic("put: invalid owner signature") } @@ -112,7 +112,7 @@ func Put(container, signature, publicKey []byte) bool { from := walletToScripHash(ownerID) balanceContractAddr := storage.Get(ctx, balanceContractKey).([]byte) - containerFee := contract.Call(netmapContractAddr, "config", containerFeeKey).(int) + containerFee := contract.Call(netmapContractAddr, "config", contract.ReadOnly, containerFeeKey).(int) hashCandidate := common.InvokeID([]interface{}{container, signature, publicKey}, []byte("put")) n := common.Vote(ctx, hashCandidate, irKey) @@ -125,6 +125,7 @@ func Put(container, signature, publicKey []byte) bool { to := contract.CreateStandardAccount(node.PublicKey) tx := contract.Call(balanceContractAddr, "transferX", + contract.All, from, to, containerFee, @@ -138,7 +139,7 @@ func Put(container, signature, publicKey []byte) bool { addContainer(ctx, containerID, ownerID, container) // try to remove underscore at v0.92.0 - _ = contract.Call(neofsIDContractAddr, "addKey", ownerID, [][]byte{publicKey}) + _ = contract.Call(neofsIDContractAddr, "addKey", contract.All, ownerID, [][]byte{publicKey}) runtime.Log("put: added new container") } else { @@ -163,7 +164,7 @@ func Delete(containerID, signature []byte) bool { if len(irKey) == 0 { // check provided key neofsIDContractAddr := storage.Get(ctx, neofsIDContractKey).([]byte) - keys := contract.Call(neofsIDContractAddr, "key", ownerID).([][]byte) + keys := contract.Call(neofsIDContractAddr, "key", contract.ReadOnly, ownerID).([][]byte) if !verifySignature(containerID, signature, keys) { panic("delete: invalid owner signature") @@ -232,7 +233,7 @@ func SetEACL(eACL, signature []byte) bool { } neofsIDContractAddr := storage.Get(ctx, neofsIDContractKey).([]byte) - keys := contract.Call(neofsIDContractAddr, "key", ownerID).([][]byte) + keys := contract.Call(neofsIDContractAddr, "key", contract.ReadOnly, ownerID).([][]byte) if !verifySignature(eACL, signature, keys) { panic("setEACL: invalid eACL signature") @@ -266,7 +267,7 @@ func EACL(containerID []byte) extendedACL { // attach corresponding public key if it was not revoked from neofs id neofsIDContractAddr := storage.Get(ctx, neofsIDContractKey).([]byte) - keys := contract.Call(neofsIDContractAddr, "key", ownerID).([][]byte) + keys := contract.Call(neofsIDContractAddr, "key", contract.ReadOnly, ownerID).([][]byte) for i := range keys { key := keys[i] @@ -560,7 +561,7 @@ func getContainerSizeEstimation(key, cid []byte) containerSizes { // announce container size estimation of previous epoch. func isStorageNode(key interop.PublicKey) bool { netmapContractAddr := storage.Get(ctx, netmapContractKey).([]byte) - snapshot := contract.Call(netmapContractAddr, "snapshot", 1).([]storageNode) + snapshot := contract.Call(netmapContractAddr, "snapshot", contract.ReadOnly, 1).([]storageNode) for i := range snapshot { nodeInfo := snapshot[i].info diff --git a/neofs/neofs_contract.go b/neofs/neofs_contract.go index 8f90ca8..ddd5af8 100644 --- a/neofs/neofs_contract.go +++ b/neofs/neofs_contract.go @@ -175,7 +175,7 @@ func InnerRingCandidateAdd(key []byte) bool { fee := getConfig(ctx, candidateFeeConfigKey).(int) transferred := contract.Call([]byte(tokenHash), - "transfer", from, to, fee, + "transfer", contract.All, from, to, fee, []byte(ignoreDepositNotification)).(bool) if !transferred { panic("irCandidateAdd: failed to transfer funds, aborting") @@ -231,7 +231,7 @@ func Deposit(from interop.Hash160, amount int, rcv interop.Hash160) bool { to := runtime.GetExecutingScriptHash() transferred := contract.Call([]byte(tokenHash), "transfer", - from, to, amount, rcv).(bool) + contract.All, from, to, amount, rcv).(bool) if !transferred { panic("deposit: failed to transfer funds, aborting") } @@ -289,7 +289,7 @@ func Cheque(id, user []byte, amount int, lockAcc []byte) bool { from := runtime.GetExecutingScriptHash() transferred := contract.Call([]byte(tokenHash), - "transfer", from, user, amount, nil).(bool) + "transfer", contract.All, from, user, amount, nil).(bool) if !transferred { panic("cheque: failed to transfer funds, aborting") }