まず、アカウントに追加する新しいキーを生成する必要があります。msig.lak1アカウントに新しい制限付きアクセス キー (LAK) を追加するため、キーに名前を付けますmsig。
near generate-key msig.lak1
生成された公開鍵をコピーします。
マルチシグ コントラクトのようconfirmに、後で参照して tx に署名するために、secretKey は次の場所にあります。code ~/.near-credentials/default/msig.lak1.json
これをアカウントに追加する必要がありますmsig。
Near shell は新しいキーをアカウントに追加する機能を提供しないため、near repl を使用する必要があります。
完全なアクセス キーが 1 つだけのマルチシグ契約アカウントnear replの accountIdで起動します。msig
near repl --accountId msig
>
更新:(@ vlad-grichinaコメントに感謝)
await account.addKey("PUBLIC KEY FROM GENERATE KEY", contractName, 'confirm')
これはシングル アクション tx であるためです。
前へ: (アクションをバンドルする場合)
次に、トランザクションを作成addKeyし、アカウントを使用して署名しmsigます。
const contractName = "msig"
const result = account.signAndSendTransaction('msig', [
nearAPI.transactions.addKey(nearAPI.utils.PublicKey.from("PUBLIC KEY FROM GENERATE KEY"), nearAPI.transactions.functionCallAccessKey(contractName, ['confirm'], null)),
])
キーが追加されたことをニアシェルを使用して確認できます。
near keys msig
これで、秘密鍵を使用してマルチシグ コントラクト リクエストを確認できます。
// in my JS app
await window.keyStore.setKey(
NETWORK_ID, contractName,
// from ~/.near-credentials/default/msig.lak1.json
nearApi.KeyPair.fromString(secretKey)
)
const contract = new nearApi.Contract(window.contractAccount, contractName, {
changeMethods: ['confirm'],
sender: contractName
})
...
contract.confirm({ request_id: X }) // confirms request
また、エクスプローラーでチェックインして、アクセス キー tx の追加が成功したことを確認できます:
https://explorer.testnet.near.org/accounts/msig
