SOLANA PDA 理解与实战

Solana里一切都是Account(等同于Linux的一切都是文件,Rust的一切都是类型),Account有两类,如下:

* 一般账户 = 有Pubkey的,Owner是SystemProgram的,位于椭圆曲线上的 能碰出来几个首字母的那种。代码里的这个东东 = Solana_pogram::pubkey::Pubkey。

* PDA = Program Derived, 从Program中派生出来的, 别跟一般账户冲突哦,要推出椭圆曲线(加个Seed再做hash),再加Bump类似nonce的东西,防止PDA成为Pubkey。

    总结下: 确定一个PDA的三要素: ProgramID, Seed, Bump。Bump作为一个属性放到普通Account的结构中。

### 生成一个PDA

    区块链中一般使用Map记录地址和对应的数据, 即,使用一个地址作为Key,寻找对应的数据Account(Value)。

    Solana中, Key是Seeds,Value是PDA。

    而 Seeds =  Program中Account的名字(字面值) + 用户的Pubkey。

    这样, Seeds - Program - User的Pubkey就关联起来了。Anchor context中的bumps具有get bump的函数,bump和Accout字面值对应。

    举个例子:老师要做一次考试

    Instruction 函数叫go_exam

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值