このガイドでは、マルチシグアカウントから署名者を削除する方法を説明します。
次のコードは minRemoval
を 1 に設定して 2-of-3 マルチシグアカウントから署名者を削除する方法を示しています。
// replace with network type
const networkType = NetworkType.TEST_NET;
// replace with multisig public key
const multisigAccountPublicKey =
'3A537D5A1AF51158C42F80A199BB58351DBF3253C4A6A1B7BD1014682FB595EA';
const multisigAccount = PublicAccount.createFromPublicKey(
multisigAccountPublicKey,
networkType,
);
// replace with cosignatory public key
const cosignatoryToRemovePublicKey =
'17E42BDF5B7FF5001DC96A262A1141FFBE3F09A3A45DE7C095AAEA14F45C0DA0';
const cosignatoryToRemove = PublicAccount.createFromPublicKey(
cosignatoryToRemovePublicKey,
networkType,
);
// replace with cosignatory private key
const cosignatoryPrivateKey =
'1111111111111111111111111111111111111111111111111111111111111111';
const cosignatoryAccount = Account.createFromPrivateKey(
cosignatoryPrivateKey,
networkType,
);
const multisigAccountModificationTransaction = MultisigAccountModificationTransaction.create(
Deadline.create(epochAdjustment),
0,
0,
[],
[cosignatoryToRemove.address],
networkType,
);
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),
);
// replace with network type
const networkType = symbol_sdk_1.NetworkType.TEST_NET;
// replace with multisig public key
const multisigAccountPublicKey =
'3A537D5A1AF51158C42F80A199BB58351DBF3253C4A6A1B7BD1014682FB595EA';
const multisigAccount = symbol_sdk_1.PublicAccount.createFromPublicKey(
multisigAccountPublicKey,
networkType,
);
// replace with cosignatory public key
const cosignatoryToRemovePublicKey =
'17E42BDF5B7FF5001DC96A262A1141FFBE3F09A3A45DE7C095AAEA14F45C0DA0';
const cosignatoryToRemove = symbol_sdk_1.PublicAccount.createFromPublicKey(
cosignatoryToRemovePublicKey,
networkType,
);
// replace with cosignatory private key
const cosignatoryPrivateKey =
'1111111111111111111111111111111111111111111111111111111111111111';
const cosignatoryAccount = symbol_sdk_1.Account.createFromPrivateKey(
cosignatoryPrivateKey,
networkType,
);
const multisigAccountModificationTransaction = symbol_sdk_1.MultisigAccountModificationTransaction.create(
symbol_sdk_1.Deadline.create(epochAdjustment),
0,
0,
[],
[cosignatoryToRemove.address],
networkType,
);
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),
);
minRemoval プロパティ はマルチシグからアカウントを削除するために必要な署名の数を示します。この値は minApproval プロパティ を変更するのと同じ方法で増減できます。
今回 MultisigModificationTransaction はマルチシグから他のアカウントを削除するために必要なアカウントは 1 つだけなので、 AggregateCompleteTransaction によってラップされています。
注釈
トランザクションのアナウンスに複数の署名が必要な (たとえば minRemoval
が 2 に設定されている場合) 、トランザクションはアグリゲート ボンデッド として定義する必要があり、また、他のすべての必要なマルチシグ参加者は、承認のために署名する必要があります。 次のガイド に従って、マルチシグアカウントに関連する、アグリゲートボンデッドトランザクションをアナウンスします。
次のガイド に従って、マルチレベルマルチシグアカウントを作成します。
お探しのものは見つかりましたか? フィードバックをください。