8个版本

0.0.8 2023年2月13日
0.0.7 2023年2月11日

#17#multisig

每月31次下载

MIT/Apache

49KB
360

multisig-lite

CI License Cargo Documentation

一个原生SOL 多重签名链上程序,用于Solana区块链

目前提供五条指令以提供队列的多重签名转账操作

  1. 创建
  2. 资金
  3. 创建转账
  4. 批准
  5. 关闭

示例

这是如何在链上创建一个新的多重签名账户的方法。

有关其他指令的示例,请参阅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-2.0许可证定义,应如上所述双许可,不附加任何额外条款或条件。

依赖项

~19–29MB
~491K SLoC