更多
APP下载
合作
商城
签到

互动论坛 赚钱交流 Solana的程序派生地址(PDA)

[复制链接]
  • TA的每日心情
    开心
    2024-8-12 07:03
  • 签到天数: 97 天

    227

    主题

    -3

    伯币

    5623

    积分

    版务新手

    积分
    5623
    发表于 2024-6-21 20:41:51 | 显示全部楼层 | 阅读模式

    (1)Solana的账户抽象

    Solana的账户抽象类似于以太坊的ERC-4337。它们是从原始帐户派生的帐户(类似于EOA帐户),类似于4337合约帐户。在理解Solana的账户抽象之前,有必要先来了解Solana使用的账户模型。

    从广义上讲,账户可以分为可以执行代码的可执行账户和不能执行代码的不可执行账户。进一步来看,Solana上有三种类型的帐户:原生程序(Native Program)、程序帐户(Program Account)和数据帐户(Data Account)。

    原生程序是验证器实现的一部分,为Solana网络提供核心功能,例如创建新的数据帐户和自定义程序。程序帐户是包含可执行代码的自定义程序。数据帐户可以按照其所有者程序帐户的定义存储数据并管理程序状态。

    这个帐户模型使程序帐户能够创建并管理特定的帐户,为开发人员提供了定义自定义规则和逻辑来管理账户的能力。在此帐户模型的支持下,程序派生地址(PDA)(一种数据帐户)扩展了Solana上帐户抽象功能的可能性,从通过多重签名钱包和双因素认证增强用户安全性到启用社交恢复机制等。

    2024-06-21 20 40 00.png

    (2)程序派生地址

    对于上下文,所有帐户都位于Ed25519曲线上,并具有公私密钥对。PDA位于Ed25519曲线之外,是一个确定性派生的32字节字符串,看起来像公钥,但没有相应的私钥。PDA允许开发人员创建自定义规则和交易签名机制,允许PDA的程序帐户所有者代表PDA自主执行交易,完全由Solana网络认可和支持。

    2024-06-21 20 39 50.png

    (3)PDA和帐户抽象

    现在我们了解了PDA是如何派生的,你可能还想知道这些概念是如何与帐户抽象联系在一起的。帐户抽象是通过一个名为跨程序调用(CPI)的函数的性能在底层实现的。

    CPI是一种函数,它使一个程序能够调用另一个程序的指令,从而实现Solana程序的可组合性。当程序通过invoke_signed启动CPI时,程序就能够代表派生PDA进行签名。

    为了验证PDA相关交易的合法性,Solana runtime(运行时)在内部使用调用程序的signers_seeds和program_id调用create_program_address。如果发现有效的PDA,runtime将把PDA与调用程序关联起来,并将该程序识别为授权的签名者。

    目前,Squads正在开发一个基于PDA的Solana账户抽象解决方案。然而,Squads提供的产品目前更类似于Gnosis Safe的智能合约账户解决方案,尚未完全开发其账户抽象功能。

    (4)PDA的优点

    · 自动执行智能合约:PDA支持更复杂的智能合约设计,可以通过跨程序调用代表用户自主执行多个操作。

    · 增强的用户体验:用户不需要管理多个交易或面对技术复杂性。

    · 增强的安全性和灵活性:没有私钥,这降低了密钥泄露的风险。PDA可以用于多签钱包或其他灵活的治理模型,这些模型可以减少单点风险,并且对于管理大型共享资源的组织尤其好用。

    (5)PDA的局限性

    PDA虽然有助于为帐户抽象功能奠定基础,但与密钥对帐户相比,实现起来可能比较复杂。

    与ERC-4337一样,它要求用户执行帐户迁移到新帐户,这可能会抑制Solana帐户抽象的采用


    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表