forked from TrueCloudLab/frostfs-node
[#161] morph: Refactor invokeNotary method
Resolve funlen linter Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
This commit is contained in:
parent
512b72591a
commit
93cb9e3a94
1 changed files with 26 additions and 14 deletions
|
@ -892,7 +892,6 @@ func invokeNonNotary(c Client, key keys.PrivateKey, method string, args ...any)
|
|||
return nil
|
||||
}
|
||||
|
||||
// nolint: funlen
|
||||
func invokeNotary(c Client, key keys.PrivateKey, method string, notaryHash util.Uint160, args ...any) error {
|
||||
nnsCs, err := c.GetContractStateByID(1)
|
||||
if err != nil {
|
||||
|
@ -921,13 +920,7 @@ func invokeNotary(c Client, key keys.PrivateKey, method string, notaryHash util.
|
|||
return fmt.Errorf("subnet hash resolving: %w", err)
|
||||
}
|
||||
|
||||
// make test invocation of the method
|
||||
test, err := inv.Call(subnetHash, method, args...)
|
||||
if err != nil {
|
||||
return fmt.Errorf("test invocation: %w", err)
|
||||
}
|
||||
|
||||
err = checkInvocationResults(test)
|
||||
test, err := makeTestInvocation(inv, subnetHash, method, args)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -943,7 +936,26 @@ func invokeNotary(c Client, key keys.PrivateKey, method string, notaryHash util.
|
|||
return fmt.Errorf("blockchain height: %w", err)
|
||||
}
|
||||
|
||||
signersNumber := uint8(smartcontract.GetDefaultHonestNodeCount(len(alphabet)) + 1) // alphabet multisig + key signature
|
||||
return createAndPushTransaction(alphabet, test, bc, cosigners, c, key, multisigAccount)
|
||||
}
|
||||
|
||||
func makeTestInvocation(inv *invoker.Invoker, subnetHash util.Uint160, method string, args []any) (*result.Invoke, error) {
|
||||
test, err := inv.Call(subnetHash, method, args...)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("test invocation: %w", err)
|
||||
}
|
||||
|
||||
err = checkInvocationResults(test)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return test, nil
|
||||
}
|
||||
|
||||
func createAndPushTransaction(alphabet keys.PublicKeys, test *result.Invoke, blockCount uint32, cosigners []transaction.Signer,
|
||||
client Client, key keys.PrivateKey, multisigAccount *wallet.Account) error {
|
||||
// alphabet multisig + key signature
|
||||
signersNumber := uint8(smartcontract.GetDefaultHonestNodeCount(len(alphabet)) + 1)
|
||||
|
||||
// notaryRequestValidity is number of blocks during
|
||||
// witch notary request is considered valid
|
||||
|
@ -952,7 +964,7 @@ func invokeNotary(c Client, key keys.PrivateKey, method string, notaryHash util.
|
|||
mainTx := &transaction.Transaction{
|
||||
Nonce: rand.Uint32(),
|
||||
SystemFee: test.GasConsumed,
|
||||
ValidUntilBlock: bc + notaryRequestValidity,
|
||||
ValidUntilBlock: blockCount + notaryRequestValidity,
|
||||
Script: test.Script,
|
||||
Attributes: []transaction.Attribute{
|
||||
{
|
||||
|
@ -963,7 +975,7 @@ func invokeNotary(c Client, key keys.PrivateKey, method string, notaryHash util.
|
|||
Signers: cosigners,
|
||||
}
|
||||
|
||||
notaryFee, err := c.CalculateNotaryFee(signersNumber)
|
||||
notaryFee, err := client.CalculateNotaryFee(signersNumber)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -971,14 +983,14 @@ func invokeNotary(c Client, key keys.PrivateKey, method string, notaryHash util.
|
|||
acc := wallet.NewAccountFromPrivateKey(&key)
|
||||
aa := notaryAccounts(multisigAccount, acc)
|
||||
|
||||
err = c.AddNetworkFee(mainTx, notaryFee, aa...)
|
||||
err = client.AddNetworkFee(mainTx, notaryFee, aa...)
|
||||
if err != nil {
|
||||
return fmt.Errorf("notary network fee adding: %w", err)
|
||||
}
|
||||
|
||||
mainTx.Scripts = notaryWitnesses(c, multisigAccount, acc, mainTx)
|
||||
mainTx.Scripts = notaryWitnesses(client, multisigAccount, acc, mainTx)
|
||||
|
||||
_, err = c.SignAndPushP2PNotaryRequest(mainTx,
|
||||
_, err = client.SignAndPushP2PNotaryRequest(mainTx,
|
||||
[]byte{byte(opcode.RET)},
|
||||
-1,
|
||||
0,
|
||||
|
|
Loading…
Reference in a new issue