8个版本
0.0.8 | 2023年2月13日 |
---|---|
0.0.7 | 2023年2月11日 |
#17 在 #multisig
每月31次下载
49KB
360 行
multisig-lite
目前提供五条指令以提供队列的多重签名转账操作
示例
这是如何在链上创建一个新的多重签名账户的方法。
有关其他指令的示例,请参阅multisig_lite::multisig_lite
模块级别的文档。
use std::rc::Rc;
use solana_sdk::commitment_config::CommitmentConfig;
use solana_sdk::pubkey::Pubkey;
use solana_sdk::signature::read_keypair_file;
use solana_sdk::signer::Signer;
use solana_sdk::system_program;
use anchor_client::{Client, Cluster};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let url = Cluster::Devnet;
let funder = Rc::new(read_keypair_file(
shellexpand::tilde("~/.config/solana/id.json").as_ref(),
)?);
let opts = CommitmentConfig::processed();
let pid = multisig_lite::id();
let program = Client::new_with_options(url, funder.clone(), opts).program(pid);
// Gets the PDAs.
let (state_pda, state_bump) =
Pubkey::find_program_address(&[b"state", funder.pubkey().as_ref()], &pid);
let (fund_pda, fund_bump) = Pubkey::find_program_address(&[b"fund", state_pda.as_ref()], &pid);
// Creates a multisig account.
let sig = program
.request()
.accounts(multisig_lite::accounts::Create {
funder: funder.pubkey(),
state: state_pda,
fund: fund_pda,
system_program: system_program::id(),
})
.args(multisig_lite::instruction::Create {
m: 2, // m as in m/n.
signers: vec![funder.pubkey(), Pubkey::new_unique(), Pubkey::new_unique()],
q: 10, // transfer queue limit.
_state_bump: state_bump,
fund_bump,
})
.signer(funder.as_ref())
.send()?;
Ok(())
}
测试
您可以使用标准的cargo test
命令运行基于solana-program-test的功能测试。
$ cargo test
许可证
许可方式为以下之一
- Apache License,版本2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则您有意提交的任何贡献,根据Apache-2.0许可证定义,应如上所述双许可,不附加任何额外条款或条件。
依赖项
~19–29MB
~491K SLoC