桥接复杂链上协议与链下世界,赋予开发者构建生态之自由
Ergo 无头 dApp框架(简称Ergo HDF)是开发Ergo无头dApp(去中心化应用)的首选Rust框架。Ergo HDF给开发者提供了首个可移植、基于UTXO(未花费交易输出)的无头dApp开发框架,此框架可应用于任何区块链。(译注:Rust是一款并发安全,支持函数式、命令式以及泛型等编程范式的多范式编程语言,语法和C++类似)
什么是无头dApp?
无头dApp是用于开发dApp的全新技术和商业模型,它刚开始在更广泛的区块链领域中占据一席之地。简而言之,无头dApp是读取和参与链上智能合约协议的纯粹可移植自包含逻辑。
换句话说,无头dApp是一款可让复杂链上协议接触链下世界的软件,它精简的接口使任何人都可以在其上进行构建。此处的关键是,顾名思义,无头dApp没有构建于其上的前端(故称“无头”)。
无头dApp提供的是在其上构建整个去中心化生态系统的自由。由于在默认情况下,无头dApp是纯粹的,可移植的,因此可以将它们编译为任何桌面设备操作系统、移动设备操作系统或者浏览器。因为它们具有精简的接口,所以可以轻松将其集成到脚本和机器人中;因为它们具有可组合性,所以可以在应用程序中一起使用,从而可以轻松地在不同协议之间套利,或者可以形成全新的用户体验,而无需了解每个受支持的无头dApp的核心工作方式。
新入行的开发者对于开发智能合约协议的经验有限,而无头dApp在未来可以使他们仍然对dApp领域产生真正的影响。这种关注点分离(Separation of Concerns)的设计允许开发者在无头dApp的基础上进行构建,而无需花费大量时间来了解开发dApp的繁冗细节。(译注:Separation of Concerns,关注点分离,是将计算机程序分隔为不同部分的设计原则,每一部分会有各自关注的焦点,也就是可以影响程序代码的信息集合。)
此外,无头dApp开启了全新商业模式的生态系统。 无头dApp并没有让智能合约协议的创建者从成功的协议中攫取所有潜在的利润/价值,反而为前端开发者揭示了截至目前尚未利用的收入来源。 通过仅将协议创建者的潜在收益分散到现在包含已开发的每个前端,我们可以从当今具有单个前端的流行dApp所产生的中心化效果上退一步。 相反,我们可以激励由各种开发者/公司构建的,由众多独立前端组成的稳健生态系统,所有人都可以因改善整个生态系统而获利。
摩根大通分析师:减半效应可能会使比特币价格升至4万至4.5万美元:6月30日消息,摩根大通分析师在一份报告中指出,鉴于挖矿成本往往会成为比特币的价格下限,减半可能导致比特币的价格跃升至 40,000 美元至 45,000 美元之间。因为随着奖励的下降,矿工的挖矿成本将会升至 40,000 美元左右。[2023/6/30 22:10:58]
无头dApp实现了这所有功能,并且同时进一步改善了开发者的体验。
方案目标
1.让开发者使用无头dApp框架写出自己的链下逻辑,从而创建他们自己面向所有平台(桌面设备、网页、移动设备)的无头dApp。
2.为开发者提供从Ergo dApp规范到无头dApp的轻松体验,并提供更强大的保证和简单直接的实现途径。
3.将dApp的链下逻辑与任何前端逻辑分开,从而无论什么应用或前端在集成无头dApp时都保证了重用性。
4.为前端实现者提供易于使用的方法,以便轻松访问dApp协议的当前状态,而无需了解其工作原理。
5.通过使用新颖的设计模式为所需的输入UTXO指定BoxSpec(译注:Rust框架中定义盒子规范的结构体),将为无头dApp定义和获取输入UTXO的概念进行了抽象化。
6.使脚本、(套利)机器人和其他软件轻松地构建在使用无头dApp框架构建的多个无头dApp之上,从而提供了标准化的接口和一定程度的可组合性。
理解Ergo无头dApp框架
在使用无头dApp框架(HDF)之前,有许多重要的术语和概念需要理解。无头dApp框架的总体设计基于EIP-6:Ergo智能合约协议规范格式。(译注:EIP全称Ergo Improvement Proposal,即Ergo改善方案。EIP-6链接为https://github.com/ergoplatform/eips/blob/master/eip-0006.md)
这意味着在最高层级上,dApp被定义为智能合约协议。 如果dApp只有一个阶段,则将其定义为“单阶段智能合约协议”;如果dApp有多个阶段,则它是“多阶段智能合约协议”。HDF支持构建单阶段和多阶段协议dApp。
每个阶段都可以被视为协议中的一个状态,其中带有ERG、代币和数据(在寄存器内)的UTXO位于给定的时间点处。 这可能有在整个协议中从一个阶段移动到下一个阶段的单个盒子(UTXO)、可能并行地通过所有阶段的多个盒子或者是异步地在某些阶段子集中移动的各种盒子。
美国最高法院在仲裁纠纷中做出有利于Coinbase的裁决:金色财经报道,周五,美国最高法院在仲裁纠纷中做出有利于Coinbase的裁决,加强了公司将客户和员工纠纷诉诸仲裁的能力。法官们以5比4的投票结果裁定,在被告Coinbase提出上诉并将案件提交仲裁期间,向联邦法院提起的诉讼必须暂停。支持上述裁定的最高法院法官卡瓦诺表示,在上诉正在进行的情况下,允许地区法院继续推进案件审理,将减少仲裁的好处。商业团体在此案中支持Coinbase,称让诉讼继续下去会带来不必要的成本。在过去的二十年里,美国最高法院加强了公司对消费者和雇员执行仲裁条款的权力。这些裁决引用了1925年的《联邦仲裁法》,该法规定法院必须像执行其他合同一样执行仲裁协议。仲裁费用较低,并给被告提供关键的程序优势。[2023/6/26 21:59:40]
无论给定智能合约协议的特定设计/复杂性如何,这些阶段中的每个阶段都需要“操作”(Action)。这些操作指的是状态转换(交易逻辑),它允许:
1.ERG/代币/数据进入协议(又称“引导操作(Bootstrap action)”)
2.ERG/代币/数据从协议中的一个阶段转到另一个阶段(或者退出协议)
3.ERG/代币/数据离开协议
在无头dApp的背景下,这些操作(Action)中每个都由两个关键部分组成:
1.获取输入(UTXO/用户输入/来自外部世界的外部数据)
2.使用状态转换的结果来创建UTXO输出
综上所述,dApp可以是单阶段或多阶段的智能合约协议。dApp协议中的每个阶段都可以执行一个或多个操作(Action)。 然后,开发者可以通过指定给定操作所需的必需输入并编码所需的状态转换逻辑来定义这些操作,以创建嵌入在新创建的UnsignedTx中的UTXO输出(译注:UnsignedTx是无符号交易变量)。
无头dApp框架提供了指定这些构件的必需工具,以便从头开始构建无头dApp。 在以下各节中,我们将详细介绍无头dApp框架的构建方式以及如何马上开始使用它。
Ergo无头dApp框架模块
Box Spec (盒子规范)
本模块展示了BoxSpec结构体,它可以用来创建UTXO的规范。根据协议中操作(Action)的要求,这被用来定义相关的盒子。
/// 用来制定 `ErgoBox`参数的规范.
加密公司River与Bitcoin Magazine合作推动比特币采用:3月8日消息,比特币技术公司River宣布与Bitcoin Magazine合作,建立闪电合作伙伴关系以推动比特币的采用。据了解,River主要提供比特币经纪账户、闪电网络和挖矿服务。(prnewswire)[2023/3/8 12:50:06]
/// 本规范用作“真理之源” ,来验证和寻找和规范匹配的`ErgoBox`
///这经常被用于定义多阶段智能合约协议中的阶段
/// 但也可用于定义操作(Action)的输入盒子
/// 所有字段都被包进`Option`,可以不必指定字段
#[wasm_bindgen]
#[derive(Clone)]
pub struct BoxSpec {
/// 盒子地址
address: Option<ErgoAddressString>,
/// nanoErgs被允许的范围
value_range: Option<Range<NanoErg>>,
/// 排序的 `Constant`列表,定义了`ErgoBox`寄存器
/// 第一个元素当作R4, 第二个当作 R5, 以此类推.
registers: Vec<Option<Constant>>,
/// 排序的 `TokenSpec`列表定义了`ErgoBox`代币
tokens: Vec<Option<TokenSpec>>,
/// 可选谓词,允许定义在验证盒子时处理的自定义规范逻辑
predicate: Option<fn(&ErgoBox) -> bool>,
虎符网站内容已被清除,仅显示实控人信息公告:12月7日消息,虎符Hoo Exchange已无法使用,该加密交易平台已删除其网站,但未向其用户发出通知。目前其网站上仅有一则公告,其中公布了Hoo实际控制人的相关信息,包括证件号码、电话、以及家庭地址和官方邮件,公告称目前Hoo的钱包所有权限、网站程序全部由实际控制人控制,如有任何问题需与官方邮件联系。[2022/12/7 21:28:18]
}
构造出BoxSpec以后,有许多基本方法来简化为dApp编写链下代码的体验。
例如,verify_box允许测试作为输入提供的ErgoBox是否与使用BoxSpec创建的规范匹配。
pub fn verify_box(&self, ergo_box: &ErgoBox) -> Result<()> {
Box Traits (盒子 Trait)
(译注:Trait是Rust语言中为Self类型定义的方法组合,中文里有特征、特点之意。在Rust语言的上下文中一般直接使用而不译出,以防技术上的歧义)
本模块包含三种Trait:
1.WrappedBox
2.SpecifiedBox
3.ExplorerFindable
所有的ExplorerFindable结构体也是SpecifiedBox,两者同时都是WrappedBox。在链下代码中,将为操作(Action)定义所有UTXO输入作为实现SpecifiedBox的结构体,同时不需额外工作便可自动派生WrappedBox和ExplorerFindable。
WrappedBox提供了简化的接口来和ErgoBox交互。另一方面,SpecifiedBox指定WrappedBox也通过box_spec()方法实现了BoxSpec。最后,ExplorerFindable在SpecifiedBox trait的顶部提供了一个接口,用于从Ergo Explorer API实例中查找与BoxSpec匹配的盒子。
Specified Boxes (指定盒子)
此模块展示了实现“ SpecifiedBox / WrappedBox / ExplorerFindable”trait的通用“ Specified Box”结构。 这些盒子可用作链下协议代码中操作(Action)的输入,同时还使前端开发者能够轻松访问链上数据(例如预言机池数据)。
风投机构1confirmation创始合伙人Nick Tomaino推特名改为“1492.eth”:金色财经消息,风投机构1confirmation创始合伙人Nick Tomaino将推特昵称改为“1492.eth”,并表示1492年哥伦布开始第一次航海。同时他称ENS是完美的NFT系列,有些人不认为ENS是NFT,但事实是它是最广泛持有的NFT。
此前报道,6月份1confirmation推出1亿美元NFT基金,该基金将直接投资NFT并拥有10年生命周期,主要专注于投资其所支持的公司的新项目,如游戏、艺术、摄影和音乐等类别的项目。[2022/9/5 13:08:41]
目前已实现的指定盒子有如下几种:
1.ErgsBox
2.ErgUsdOraclePoolBox
3.AdaUsdOraclePoolBox
ErgBox用于获取将Erg保留在其中的输入,这些输入可在智能合约协议操作(Action)中使用。
ErgUsdOraclePoolBox和AdaUsdOraclePoolBox为无头dApp开发者和前端实现者提供了极其简化的接口,以利用来自两个当前运行的预言机池的数据。 这两个指定的盒子甚至可以用于需要从预言机池盒子读取当前汇率的钱包/任何链下应用程序中。
下面的代码块显示了如何在4行中从开发者自选的Ergo Explorer API实例中读取当前的ERG-USD预言机池汇率:
let url = ErgUsdOraclePoolBox::explorer_endpoint("https://api.ergoplatform.com/api").unwrap();let response = get(&url).unwrap().text().unwrap();let oracle_pool_box = ErgUsdOraclePoolBox::process_explorer_response(&response).unwrap().clone();println!( "Erg-USD Oracle Pool: {} nanoErgs per USD", oracle_pool_box.datapoint());
Output Builders 输出构建器
此模块给出了一些结构体,它们提供了在操作(Action)中创建通用UTXO输出的基本接口。 这些通常用于创建保存用户更改或支付交易手续费的输出。
一些输出构建器的例子包括:
1.ChangeBox
2.TokensChangeBox
3.TxFeeBox
Tx Creation 创建交易
该模块提供了一些基本的函数,这让开发者更加容易地在操作(Action)中创建UnsignedTransaction(无符号交易)。
Encoding 编码
该模块提供了许多有用的函数,这些函数与把值从一种形式转换为另一种形式的编码/解码/包装/展开有关。
示例:
pub fn erg_to_nano_erg(erg_amount: f64) -> u64;pub fn nano_erg_to_erg(nanoerg_amount: u64) -> f64;pub fn unwrap_long(c: &Constant) -> Result<i64>;pub fn serialize_p2s_from_ergo_tree(ergo_tree: ErgoTree) -> P2SAddressString;
Procedural Macros 过程宏
此模块提供了三个过程宏,以使开发者的工作变得更加简单:
1.WrapBox
2.SpecBox
3.WASMBox
WrapBox只是实现了WrappedBox trait;SpecBox实现了使用BoxSpec的自定义new()方法,并且实现了ExplorerFindable trait;WASMBox实现了两种基本方法(w_new()和w_box_struct ())来让结构体启用WASM支持。
开始入门
Math Bounty Headless dApp(数学悬赏 无头dApp)教程系列已创建,可以指导初学者使用Ergo无头dApp框架。从项目创建到实现基于命令行的界面,您将得到精确到每一步的指导来逐步开发自己的无头dApp。
目前可用的部分:
1.数学悬赏无头dApp-现在开始编写你的第一个操作(Action)(译注:链接地址
https://github.com/Emurgo/ergo-headless-dapp-framework/blob/main/tutorials/Math_Bounty/1-math-bounty-dApp-getting-started.md)
2.数学悬赏无头dApp-完成无头dApp(译注:链接地址
https://github.com/Emurgo/ergo-headless-dapp-framework/blob/main/tutorials/Math_Bounty/2-math-bounty-dApp-finishing-the-headless-dapp.md)
3.数学悬赏无头dApp-为创建赏金编写CLI(Command Line Interface,命令行界面)前端(译注:链接地址
https://github.com/Emurgo/ergo-headless-dapp-framework/blob/main/tutorials/Math_Bounty/3-math-bounty-dApp-writing-a-cli-frontend-that-allows-creating-bounties.md)
文档
运行以下命令来阅读无头dApp框架的文档:
cargo doc --open
Ergo平台简介
Ergo平台/Ergo Platform是一个从头搭建的安全、适应力强、开放、无需许可、真正去中心化的DeFi应用底层公链,主要专注于提供一种高效、安全、简便的方式去实现金融合约。它基于全新PoW共识机制Autolykos且永守PoW,采用UTXO升级版EUTXO模型构建,沿袭比特币传统但又新增许多功能,实现复杂金融合约的能力远超对手。其原生代币ERG总供应量为97,739,925枚,永不增发,永不销毁。Ergo于2017年开始开发,主网于2019年7月1日上线。由Github上大名鼎鼎的kushti(Alexander Chepurnoy)带领拥有10年区块链理论研究和实战经验的顶尖技术团队倾力打造。团队成员曾参与开发NXT、Scorex、Cardano和Waves等。kushti是Ergo的联合创始人兼核心开发者,曾是NXT的核心开发者、smartcontract.com(即Chainlink)的联合创始人,带领团队开发有行业领先的预言机池。详情请登录https://www.jinse.com/blockchain/979572.html。
作者简介
Robert Kornacki是顶级区块链解决方案公司、Cardano创始单位之一EMURGO的研发负责人和智能合约开发者,也是Ergo基金会成员。
Denys Zadorozhnyi是Ergo公链平台Rust软件工程师、Scala软件工程师,也是Ergo开发者之一。
作者:Robert Kornacki;Denys Zadorozhnyi
译者:Ergo公链御用翻译之一,留美计算机博士兼区块链爱好者Pie。
竞争对手Coinbase和eToro已经在向公开市场上数十亿美元的上市努力。加密货币交易所Kraken亦不甘落后。到目前为止,尚未有大型的加密货币交易所在美国公开上市.
1900/1/1 0:00:00DeFi流动性挖矿火爆一时,吸引了大量投资者参与。为了方便投资者及时了解DeFi挖矿项目的相关信息和挖矿流程,金色财经推出了“金色说明书”系列挖矿教程.
1900/1/1 0:00:00“数字人民币试点测试工作正在稳步推进。关于数字人民币‘可控匿名’的讨论也比较多。”日前,中国人民银行数字货币研究所所长穆长春在中国发展高层论坛2021年会上表示,目前的支付工具,无论是银行卡还是.
1900/1/1 0:00:00头条▌埃隆·马斯克:支付给特斯拉的比特币将保留为比特币,而不是转换为法定货币特斯拉CEO埃隆·马斯克(Elon Musk)在推特确认,“现在可以用比特币购买特斯拉了.
1900/1/1 0:00:00分析NFT的文章很多,我写自己对NFT的感受吧,希望能提供一个视角。我表达的主题是:你站在哪个世界看NFT,物理世界还是数字世界.
1900/1/1 0:00:00比特币和以太坊区块链生态系统在网络安全上(POW)的投入远远超过在其他所有方面的投入。自今年年初以来,比特币平均每天向矿工支付约3800万美元的区块奖励,外加每天约500万美元的交易费.
1900/1/1 0:00:00