このガイドでは、マルチシグトランザクションを実行するために必要な署名の最小数を増減する方法について説明します。
Alice と Bob は 1-of-2 マルチシグアカウントの連署者です。マルチシグトランザクションを承認するには、彼らのうち少なくとも一つのアカウントの署名が必要なことを意味します。つまり 最小承認数
プロパティが現在は 1 に設定されているということになります。
このケースでは、両方の連署者を必要とするように 2-of-2 マルチシグへ変更します。これを達成するために minApproval を 1 単位だけ増加します。
2-of-2 マルチシグアカウントの例
連署アカウントのうちの一つの、例えば Alice が minApprovalDelta
を増加させるために MultisigAccountModificationTransaction をアナウンスします。
// replace with network type
const networkType = NetworkType.TEST_NET;
// replace with cosignatory private key
const cosignatoryPrivateKey =
'1111111111111111111111111111111111111111111111111111111111111111';
const cosignatoryAccount = Account.createFromPrivateKey(
cosignatoryPrivateKey,
networkType,
);
// replace with multisig account private key
const multisigAccountPublicKey =
'3A537D5A1AF51158C42F80A199BB58351DBF3253C4A6A1B7BD1014682FB595EA';
const multisigAccount = PublicAccount.createFromPublicKey(
multisigAccountPublicKey,
networkType,
);
// replace with network type
const networkType = symbol_sdk_1.NetworkType.TEST_NET;
// replace with cosignatory private key
const cosignatoryPrivateKey =
'1111111111111111111111111111111111111111111111111111111111111111';
const cosignatoryAccount = symbol_sdk_1.Account.createFromPrivateKey(
cosignatoryPrivateKey,
networkType,
);
// replace with multisig account private key
const multisigAccountPublicKey =
'3A537D5A1AF51158C42F80A199BB58351DBF3253C4A6A1B7BD1014682FB595EA';
const multisigAccount = symbol_sdk_1.PublicAccount.createFromPublicKey(
multisigAccountPublicKey,
networkType,
);
minApprovalDelta
を 1 単位を増加させる MultisigAccountModificationTransaction を定義します。 const multisigAccountModificationTransaction = MultisigAccountModificationTransaction.create(
Deadline.create(epochAdjustment),
1,
0,
[],
[],
networkType,
);
注釈
minApproval
プロパティを減少させる場合は minApprovalDelta
を負の値に設定してください。たとえば、必要な署名者の数の 1 単位を減らすには minApprovalDelta
を -1
に設定します。
ネットワークへアナウンスされる前にすべての連署者が署名をすると、AggregateTransaction は コンプリート になります。正当であれば、ブロックへ取り込まれます。必要な署名は 1 つだけ (1-of-2) なので Alice はアグリゲートを コンプリート として定義し、トランザクションに署名してネットワークへアナウンスできます。
const aggregateTransaction = AggregateTransaction.createComplete(
Deadline.create(epochAdjustment),
[multisigAccountModificationTransaction.toAggregate(multisigAccount)],
networkType,
[],
UInt64.fromUint(2000000),
);
// replace with meta.networkGenerationHash (nodeUrl + '/node/info')
const networkGenerationHash =
'1DFB2FAA9E7F054168B0C5FCB84F4DEB62CC2B4D317D861F3168D161F54EA78B';
const signedTransaction = cosignatoryAccount.sign(
aggregateTransaction,
networkGenerationHash,
);
// replace with node endpoint
const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000';
const repositoryFactory = new RepositoryFactoryHttp(nodeUrl);
const transactionHttp = repositoryFactory.createTransactionRepository();
transactionHttp.announce(signedTransaction).subscribe(
(x) => console.log(x),
(err) => console.error(err),
);
const aggregateTransaction = symbol_sdk_1.AggregateTransaction.createComplete(
symbol_sdk_1.Deadline.create(epochAdjustment),
[multisigAccountModificationTransaction.toAggregate(multisigAccount)],
networkType,
[],
symbol_sdk_1.UInt64.fromUint(2000000),
);
// replace with meta.networkGenerationHash (nodeUrl + '/node/info')
const networkGenerationHash =
'1DFB2FAA9E7F054168B0C5FCB84F4DEB62CC2B4D317D861F3168D161F54EA78B';
const signedTransaction = cosignatoryAccount.sign(
aggregateTransaction,
networkGenerationHash,
);
// replace with node endpoint
const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000';
const repositoryFactory = new symbol_sdk_1.RepositoryFactoryHttp(nodeUrl);
const transactionHttp = repositoryFactory.createTransactionRepository();
transactionHttp.announce(signedTransaction).subscribe(
(x) => console.log(x),
(err) => console.error(err),
);
最小承認数
は 2 となり 2-of-2 マルチシグになります。注釈
トランザクションのアナウンスに複数の署名が必要な (たとえば 2-of-2 マルチシグアカウント) トランザクションはアグリゲート ボンデッド として定義する必要があり、また、他のすべての必要なマルチシグ参加者は、承認のために署名する必要があります。 次のガイド に従って、マルチシグアカウントに関連する、アグリゲートボンデッドトランザクションをアナウンスします。
次のガイド に従って、マルチシグアカウントに新しい署名者を追加します。
お探しのものは見つかりましたか? フィードバックをください。