Veda Protocol——基于 Ordinals 的 BTC 智能合约扩展
序章: 什么是 Veda Protocol?
“Veda”这个名字源于《吠陀经》(Vedas),这是一系列起源于古印度的宗教文本。用梵文书写,这些文本构成了梵文文学的最古老层次,也是印度教最古老的经典。
在《吠陀经》中,有一句至理名言:“असतोमा सद्गमय”(Asato Mā Sad Gamaya),意为“引领我离开虚无,走向真实。”
Veda 的契机
比特币,作为世界上第一个和最去中心的加密货币,自2009年诞生以来已经发生了许多重大变化。在这篇文章的语境下,两个最主要的发展是 Taproot 升级和 Ordinals 协议。在本文中,我们将探索这些进步的历史和技术细节,以及它们如何铺平了 Veda 协议的创建之路。
一、Taproot升级: 增强比特币的隐私和效率
A. 背景和动机
比特币的 Taproot 升级最初是由比特币核心开发者 Gregory Maxwell 在2018年提出的。该升级旨在提高比特币网络的隐私、安全性和功能性。这是一种向后兼容旧版比特币协议的软分叉升级。
B. 关键特征和优势
隔离见证(SegWit): 该功能于2017年引入,为 Taproot 奠定了基础。SegWit 将交易数据与证人数据分离,允许更快的交易时间和每个区块更多的交易。
Schnorr 签名: Taproot 集成了 Schnorr 签名,这使交易更加高效和安全。这些签名允许将多个签名聚合为单个签名,从而使复杂交易更加隐私且使用成本更低。
MAST(Merkle化抽象语法树): Taproot 使用一种新的数据结构称为 MAST,它允许将多个签名聚合为单个签名。这增强了复杂交易和智能合约的隐私性。
C. 激活和影响
在比特币社区绝大多数赞成的情况下,Taproot 升级于2021年11月激活。该升级极大地提高了比特币网络的隐私性、安全性和效率,使其更适合复杂交易和智能合约。
二、Ordinals协议: 支持比特币 NFT
A. 背景和动机
开发 Ordinals 协议的目的是在比特币区块链上启用非同质代币(NFT)的创建。得益于 Taproot 升级提供了存储任意见证数据所需的基础设施,这成为可能。
B. 关键特征和优势
铭文: Ordinals 协议允许用户将任意数据(如文本或图像)铭刻到单个聪(比特币的最小单位)上。这些铭文存储在见证数据中,得益于 Taproot 升级,见证数据与交易数据分离。
序数理论: 该理论为每个聪分配一个唯一的编号,允许它们作为单个资产进行跟踪和交易。这支持在比特币区块链上创建 NFT。
与 Taproot 的兼容性: Ordinals 协议建立在 Taproot 升级的基础之上,这使其有可能在比特币网络上存储和转移 NFT,而无需单独的区块链或代币。
C. 影响和未来展望
Ordinals 协议通过支持 NFT 的创建为比特币网络打开了新的可能性。这引起了比特币生态系统的浓厚兴趣,并奠定了进一步创新的基础,例如 Veda 等协议的创建。
三、Veda协议: 拓展比特币生态系统
A. 背景和动机
Veda 协议是一个构建在比特币 Ordinals 之上的实验性 EVM 扩展协议。它旨在为比特币网络带来智能合约功能性,解决比特币中缺乏第1层智能合约的问题。
B. 关键特征和优势
第1层智能合约: Veda 协议支持在比特币区块链上直接创建智能合约,使其功能更加通用,对开发者也更有吸引力。
与 Ordinals 和 Taproot 的兼容性: Veda 协议利用 Taproot 升级和 Ordinals 协议提供的基础设施,可与比特币网络无缝集成。
增强的安全性和效率: 通过利用 Taproot 升级的功能,Veda 协议能为比特币网络上的智能合约提供增强的安全性和效率。
C. 启动和未来展望
Taproot 升级、Ordinals 协议和 Veda 协议的出现可能标志着比特币生态系统进化中的重要里程碑。
这些进步扩展了比特币网络的功能,使其更加通用、高效和安全。
随着比特币生态系统的不断增长和发展,我们期待会有更多这样创新来推动世界上第一个和最去中心化加密货币的潜能。
天启: Veda——基于 Ordinals 的 BTC 智能合约扩展
“Veda 协议是基于 Ordinals 理论的 EVM 扩展协议。用户可以通过在 Ordinals 上创建指令内容来执行 EVM 合约操作(类似于Brc-20)。Veda 指令被抽象为两个模块:合约部署和合约执行。
Veda 协议以两个模块运行:Veda-core 和 Veda-bvm。Veda-core 负责协议数据验证和输入,而 Veda-bvm 则处理协议合约执行并提供eth_call
方法。
Veda-core 主要在 Ordinals 上索引 veda 指令,进行签名、指令合法性等一系列验证,最终生成 tx hash。然后,它将地址编码为与 EVM 和其他类似操作兼容的 20 字节十六进制地址。然后通过 json rpc 调用解析后的数据来触发 Veda-bvm 中的执行。
Veda-bvm主要处理合约执行和合约状态查询。当 Veda-bvm 收到来自 Veda-core 的 rpc 调用时,它会确定要采取的操作。如果是合约部署指令,它会持久存储合约字节码,以供将来外部rpc调用执行只读合约方法。Veda-bvm 虚拟机可以被视为 EVM 的子集,删除了某些不兼容的操作码。这意味着开发者可以使用现有的 Solidity 编译器来编译 bvm 合约。具体改动请参考 bvm 修改章节。此外,Veda-bvm 还提供API服务,用于外部调用只读合约方法。”
让我们来理解一下以上这段话:
“好的,想象一下你有一本神奇的魔法书,名字叫做“Ordinals”。现在有一个叫“Veda”的魔法书的特殊用法,它就像一种独特的法力放大器。
首先,Veda 是基于“Ordinals”这本书的,就像在魔法书上添加了一些额外的说明一样。你可以通过在“Ordinals”书上写下一些特殊的指令,来执行一些特殊的魔法操作,就像你在书上画画一样,只不过你的画加上了 Veda 特殊的指令便可以动起来。
这个 Veda 魔法被分成两个部分,就像两个超级英雄一样。一个超级英雄叫做“Veda-core”,它就像一个魔法检查员,负责检查书上的指令,看它们是否正确。然后,它把这些指令翻译成一种特殊的语言,让其他超级英雄也能听懂。
另一个超级英雄叫做“Veda-bvm”,它就像一个法杖一样。当 Veda-bvm 听到 Veda-core 翻译过来的特殊语言时,它知道该怎么做。如果是一个新的指令,它就把这个魔法存储起来,以备将来需要。如果是立刻执行的指令,比如现在让一些魔法发生,它就立刻执行。
所以,Veda 就像是一个魔法的超级英雄团队,他们使用特殊的施法方式在“Ordinals”魔法书上书写,确保所有的魔法都是安全的。而且,他们能够使用一种特殊的语言,让其他超级英雄也能够理解。很酷,对吧?”
Why EVM?
“EVM rules everything around me.”
2023年11月29日的一次深刻观察中,Jason Choi 以"EVM 主宰我周围的一切"的陈述,概括了区块链生态的本质。这简洁的表达强调了以太坊虚拟机(EVM)在塑造和主导去中心化技术领域中的关键作用。作为以太坊区块链的基本计算引擎,EVM 是智能合约和去中心化应用变革力量的明证,对整个区块链领域产生深远影响。Choi 的陈述捕捉了关于 EVM 在不断演变的区块链创新领域中的重要性,以及对其行业领先地位的肯定。
以太坊虚拟机(EVM)是以太坊区块链的关键组成部分,由于几个原因,它已经成为区块链生态系统中的主导力量。其中一个主要原因是以太坊是第一个引入智能合约的区块链,使得开发者能够在以太坊网络上构建去中心化应用程序(DApps)。这吸引了大量开发者加入平台,进而推动了许多热门的DApps和代币的发展。
EVM 在区块链生态系统中占主导地位的另一个原因是网络效应。随着越来越多的开发者和用户采用以太坊平台,它已经成为许多基于区块链的项目的首选平台。这导致了一个良性循环,即使用以太坊的人越多,它就变得越有价值和有用。
在数据方面,以太坊一直是智能合约和去中心化应用程序最活跃使用的区块链。根据 defillama 的数据,与其他智能合约平台相比,以太坊拥有最多的 DApps 和每日活跃用户。此外,以太坊在所有智能合约平台中具有最高的市值,并且在以太坊 DeFi 协议中锁定的价值最大。
EVM 在区块链生态系统中的主导地位是由于其早期引入智能合约、网络效应以及庞大而活跃的开发者和用户社区。
而 Veda 则代表了将 EVM 优势转化到比特币生态的重要尝试。
在 Veda Protocol 官方 X 宣布了在区块高度 822267 后协议正式上线的大概一个小时内,匿名开发者 UXVpcyBjdXN0b2RpZXQgaXBzb3MgY3VzdG9kZXM 调用了 Veda 官方在12月10日开源的代码部分的内容部署了基于此协议的第一个 Token——VEDA
此开发者之前在 GitHub 的记录为零,但其名称使用了 base64 加密,其解码后的对应文字为:
"Quis custodiet ipsos custodes" 是拉丁文,翻译成英文是 "Who watches the watchmen?" 这一短语最早出现在古罗马卫队的讽刺喜剧作家尤文纳利斯的作品中。这个问题涉及到权力监督和控制的议题,强调了对于那些负责监督权力的人也需要被监督,以防止滥用权力。这一思想在哲学、政治和文学中都有所体现,表达了对于权力制衡和透明性的关注。
VEDA 在被部署的大约七个小时内被完全铸造,官方并未对此发表任何声明。
其铸造流程中的限制来自于 Veda 在12月10日已开源部分中的合约模板:
简而言之,这段代码是一个基于 Solidity 的 ERC-20 合约
以下是对这段代码的详细分析:
许可证声明:
// SPDX-License-Identifier: MIT
这是 SPDX 许可证标识符,用于声明智能合约的许可证。在这里,许可证是 MIT 许可证,表示该智能合约的代码在遵循 MIT 许可证的开源许可下发布。
Solidity 版本声明:
pragma solidity ^0.8.20;
这是 Solidity 编译器版本声明。它指定了合约代码应该使用的 Solidity 编译器版本范围,此合约要求使用 0.8.20 版本或更高版本的 Solidity 编译器。
引入 ERC20 合约:
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
通过
import
关键字引入 OpenZeppelin 的 ERC20 合约,这是一个通用的 ERC-20 合约,提供了标准的 ERC-20 功能。合约定义:
contract ERC20Token is ERC20 {
定义 ERC20Token 合约,它继承自 ERC20 合约。
变量声明:
uint256 public maxSupply; uint256 public mintAmount; uint8 private decimalPlaces;
maxSupply
:代币的最大总供应量。mintAmount
:每次铸造(mint)的代币数量。decimalPlaces
:代币的小数位数。
构造函数:
constructor( string memory name, string memory symbol, uint256 _maxSupply, uint8 _decimalPlaces, uint256 _mintAmount ) ERC20(name, symbol) { // Constructor logic }
构造函数负责初始化合约的各种参数。传入的参数包括代币的名称、符号、最大供应量、小数位数和每次铸造的数量。构造函数通过调用 ERC20 合约的构造函数初始化 ERC20Token。
decimals
函数:function decimals() public view virtual override returns (uint8) { return decimalPlaces; }
此函数覆盖了 ERC20 合约中的
decimals
函数,返回代币的小数位数。mint
函数:function mint() public { require(tx.origin == msg.sender, "Only the original external account can call this method"); require(totalSupply() + mintAmount <= maxSupply, "Max supply exceeded"); _mint(msg.sender, mintAmount); }
mint
函数用于铸造新的代币。它包括以下步骤:确保只有原始的外部账户(
tx.origin
)可以调用此函数。确保铸造后的总供应量不超过最大供应量。
调用
_mint
函数,将新铸造的代币发送到调用者(msg.sender
)的地址。
这个合约提供了创建 ERC-20 代币的基本功能,其中包括构造函数用于初始化代币的各种属性,decimals
函数用于返回小数位数,以及 mint
函数用于铸造新的代币。
截止目前,这似乎是 Veda 协议上唯一一个部署的合约,似乎是 Veda 协议 BVM 相较于 EVM 的少许改动还没有被开发者参透,又或者是此协议现在还没有对于 EVM 开发者有足够的曝光。
总结与展望
笔者真切地希望并呼吁广大 EVM 开发者社区对 Veda 协议进行更多实验性的探索和尝试,就如同开篇中所提到的:
“在《吠陀经》中,有一句至理名言:“असतोमा सद्गमय”(Asato Mā Sad Gamaya),意为“引领我离开虚无,走向真实。”
关注AK Labs Twitter