forked from TrueCloudLab/frostfs-node
[#1506] ape: Do not create cosigners slice on each contract invocation
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
This commit is contained in:
parent
3900b92927
commit
8a658de0b2
1 changed files with 20 additions and 27 deletions
|
@ -31,9 +31,7 @@ type RPCActorProvider interface {
|
||||||
type ProxyVerificationContractStorage struct {
|
type ProxyVerificationContractStorage struct {
|
||||||
rpcActorProvider RPCActorProvider
|
rpcActorProvider RPCActorProvider
|
||||||
|
|
||||||
acc *wallet.Account
|
cosigners []actor.SignerAccount
|
||||||
|
|
||||||
proxyScriptHash util.Uint160
|
|
||||||
|
|
||||||
policyScriptHash util.Uint160
|
policyScriptHash util.Uint160
|
||||||
}
|
}
|
||||||
|
@ -41,12 +39,27 @@ type ProxyVerificationContractStorage struct {
|
||||||
var _ ProxyAdaptedContractStorage = (*ProxyVerificationContractStorage)(nil)
|
var _ ProxyAdaptedContractStorage = (*ProxyVerificationContractStorage)(nil)
|
||||||
|
|
||||||
func NewProxyVerificationContractStorage(rpcActorProvider RPCActorProvider, key *keys.PrivateKey, proxyScriptHash, policyScriptHash util.Uint160) *ProxyVerificationContractStorage {
|
func NewProxyVerificationContractStorage(rpcActorProvider RPCActorProvider, key *keys.PrivateKey, proxyScriptHash, policyScriptHash util.Uint160) *ProxyVerificationContractStorage {
|
||||||
|
acc := wallet.NewAccountFromPrivateKey(key)
|
||||||
return &ProxyVerificationContractStorage{
|
return &ProxyVerificationContractStorage{
|
||||||
rpcActorProvider: rpcActorProvider,
|
rpcActorProvider: rpcActorProvider,
|
||||||
|
|
||||||
acc: wallet.NewAccountFromPrivateKey(key),
|
cosigners: []actor.SignerAccount{
|
||||||
|
{
|
||||||
proxyScriptHash: proxyScriptHash,
|
Signer: transaction.Signer{
|
||||||
|
Account: proxyScriptHash,
|
||||||
|
Scopes: transaction.CustomContracts,
|
||||||
|
AllowedContracts: []util.Uint160{policyScriptHash},
|
||||||
|
},
|
||||||
|
Account: notary.FakeContractAccount(proxyScriptHash),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Signer: transaction.Signer{
|
||||||
|
Account: acc.Contract.ScriptHash(),
|
||||||
|
Scopes: transaction.CalledByEntry,
|
||||||
|
},
|
||||||
|
Account: acc,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
policyScriptHash: policyScriptHash,
|
policyScriptHash: policyScriptHash,
|
||||||
}
|
}
|
||||||
|
@ -64,7 +77,7 @@ func (n *contractStorageActorAdapter) GetRPCInvoker() invoker.RPCInvoke {
|
||||||
|
|
||||||
func (contractStorage *ProxyVerificationContractStorage) newContractStorageActor() (policy_morph.ContractStorageActor, error) {
|
func (contractStorage *ProxyVerificationContractStorage) newContractStorageActor() (policy_morph.ContractStorageActor, error) {
|
||||||
rpcActor := contractStorage.rpcActorProvider.GetRPCActor()
|
rpcActor := contractStorage.rpcActorProvider.GetRPCActor()
|
||||||
act, err := actor.New(rpcActor, cosigners(contractStorage.acc, contractStorage.proxyScriptHash, contractStorage.policyScriptHash))
|
act, err := actor.New(rpcActor, contractStorage.cosigners)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -106,23 +119,3 @@ func (contractStorage *ProxyVerificationContractStorage) ListMorphRuleChains(nam
|
||||||
}
|
}
|
||||||
return policy_morph.NewContractStorage(contractStorageActor, contractStorage.policyScriptHash).ListMorphRuleChains(name, target)
|
return policy_morph.NewContractStorage(contractStorageActor, contractStorage.policyScriptHash).ListMorphRuleChains(name, target)
|
||||||
}
|
}
|
||||||
|
|
||||||
func cosigners(acc *wallet.Account, proxyScriptHash, policyScriptHash util.Uint160) []actor.SignerAccount {
|
|
||||||
return []actor.SignerAccount{
|
|
||||||
{
|
|
||||||
Signer: transaction.Signer{
|
|
||||||
Account: proxyScriptHash,
|
|
||||||
Scopes: transaction.CustomContracts,
|
|
||||||
AllowedContracts: []util.Uint160{policyScriptHash},
|
|
||||||
},
|
|
||||||
Account: notary.FakeContractAccount(proxyScriptHash),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Signer: transaction.Signer{
|
|
||||||
Account: acc.Contract.ScriptHash(),
|
|
||||||
Scopes: transaction.CalledByEntry,
|
|
||||||
},
|
|
||||||
Account: acc,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue