Nervos Network CKB
$0.00428 1.06%
专访 James Pretwich —— Nervos Grants 计划首位资助者
牛币圈

昨日上午 James Prestwich 于 Nervos 论坛发布了《Grant RFC:Bitcoin SPV Utils》,经过官方确认,我们开心地宣布 Nervos Grants 计划首个资助由 James Prestwich 获得。他将在 CKB 上实现 Bitcoin-SPV,Bitcoin-SPV 是一组用于处理比特币和其他链进行通信的库,支持跨链通信,包括交换、中继和桥接


大家是不是都非常好奇,James 是如何与 Nervos 结缘的,而此次要开发的项目 Bitcoin-SPV on CKB 又能为 Nervos 生态带来什么呢?


本人非常有幸于今日上午采访到了 James Prestwick,让我们来听听他是怎么说的。


在此之前先向大家介绍一下 James Prestwick。


James Prestwich 是 Summa.one 创始人,这是一家区块链互操作性和跨链通信公司,成立于 2018 年 1 月,旨在使跨链开发变得简单而无处不在。同时,James Prestwich 也是 Indefinite Integral Incorporated 的创始人兼 CEO,这是一家开发跨链金融合同的初创公司。此前,他还于 2014 年参与创办 Storj,兼任首席运营官,于 2107 年退出。


James 是一位开发者、企业家、活动家也是咖喱爱好者。除了钻研跨链相关的内容,他还研究一些闪电网络相关的脚本。据 Linkedin 显示,他还获得了日语 N2 级认证。

(部分内容摘自 Block123.com)


James 的研究十分广泛且深刻,去年发表的比特币安全性研究,以太坊 2.0 工程指南,都十分精彩:

  1. 如何用模型分析比特币安全性?区块补贴下降后如何保障安全性?
  2. 干货 | 给工程师的 ETH 2.0 指南,Part-1
  3. 干货 | 给工程师的 ETH 2.0 指南,Part-2


由此可见,James 也算是区块链行业的老兵了,对比特币和以太坊都有很深的研究,有着丰富的区块链开发经验,我们相信 James 此次一定会给 CKB 生态带来一些新东西。


采访时间


史迪仔:James 很高兴今天能够采访您。您是什么时候第一次知道 Nervos 这个项目的呢?


James Prestwich(以下简称 James):我在 2019 年初就了解到了 Nervos,2019 年整个夏天我都在深入地研究 Nervos,然后在 10 月份的旧金山区块链周上,我第一次见到了 Nervos 团队。


史迪仔:那么在旧金山区块链周遇到 Nervos 团队之前,你觉得 Nervos 是一个怎样的项目呢?


James:我一直对 Nervos 非常感兴趣,因为它具有创新的状态模型。据我所知,没有其他项目尝试使用通用化的 UTXOs(generalize UTXOs)。我认为 Nervos 将是第一个将智能合约功能加入到 UTXO 系统中的可靠尝试


史迪仔:所以是 Nervos 团队说服你去开发一个这样的项目,还是说你们在旧金山区块链周上一拍即合?


James:我们在旧金山区块链周的活动上遇见了,我问了他们一些关于 CKB 的问题,他们询问了一下 summa 最近的进展。我们有很多共同的兴趣,所以我们开始讨论可以合作这样一个项目。


史迪仔:您曾在很多项目上都开发过,您觉得 Nervos 和别的公链(比如比特币、以太坊、Cosmos)有何不同,特别是在编程方面?


James:比特币的脚本开发非常受限。它提供的工具也很少,因此可编写的程序种类会受到限制。但是这样做可以提升性能优势,运行和同步节点的成本很低,而昂贵的签名验证是在共识之外完成的。


以太坊合约功能强大且易于编写,但是验证成本要高得多,并且必须在共识过程中完成。


Nervos 介于比特币和以太坊之间。它提供了丰富的状态和多样性的程序,但是它会比以太坊合约更难编写。它的优点是昂贵的部分(计算和 SSD/磁盘读取)是在共识过程之外完成的,因此性能可以得到很大的提升。


Cosmos 更像是一个构建定制链的框架,编写特定的应用程序的链很容易,但是编写通用的链却很困难。


史迪仔:哈哈,你提到了在 CKB 上开发,会比以太坊合约更难编写。


James:是的,你需要学习如何将程序逻辑表示为交易逻辑,但我认为这是值得的,最终会有编译器为您生成交易结构。关于这个,比特币上已经有了一些学术研究。


史迪仔:嗯嗯, CKB 上其实没有智能合约这一说,一切合约逻辑都和交易有关。


James:是的。CKB 上的“智能合约”描述了什么样的交易可以发生。


史迪仔:你可以简单地向我们介绍一下 Bitcoin-SPV,以及它能够给 CKB 生态带来些什么?


James:Bitcoin-SPV 是一个实用程序库,用于分析比特币交易和区块头。它提供了检查输入和输出、检查达成的交易、验证区块头等工具,它为开发者提供了获取比特币链上事件信息的方法。


我们目前正在 Bitcoin-SPV 库上编写一个简单的跨链交换合约。它建立在我们用 solidity 编写的类似的代码的基础上,但是在 CKB 上的实现会更简单。简单地说,您可以将 CKB 放入到包含您的比特币地址和购买价格的一个 CKB 脚本中,这个 CKB 脚本允许任何人向您支付对应的比特币,从而取走您的 CKB。


史迪仔:所以这更像是原子交换,而不是跨链?


James:它类似于原子交换,但是使用的是 Bitcoin-SPV,而不是 HTLC(哈希时间锁定合约),Bitcoin-SPV 有几个优点。


HTLCs 必须经过协商,并且有一个自由选择的问题。而基于 SPV 交换,不需要协商,也不存在选择问题。


我写过一篇关于 Bitcoin-SPV 交换的文章:

https://medium.com/summa-technology/summa-auction-bitcoin-technical-7344096498f2


史迪仔:感谢,我稍后会拜读的。所以在 CKB 上加一个 Bitcoin-SPV 的 C 语言实现困难吗,对您来说是一个挑战吗,到目前为止您有遇到过什么困难吗?


James:我有一段时间没有写 C 语言了,一开始如何正确地设置编译遇到一点困难。幸运的是,Nervos 团队为编译工具链提供了一个良好的 docker 设置。


我们已经对 Solidity 版本的库进行了广泛的测试,因此,编写一个通过这些测试的 C 版本的库还是比较简单的。


当然,编写一个 CKB 脚本并通过 Rust CKB 库来运行它,在一开始的时候并不容易。我必须学习 CKB 的交易模型,之后我们会写一篇博客来教大家具体如何操作。


史迪仔:太棒了!所以你们有多少人在开发基于 CKB 的 Bitcoin-SPV?能向我们介绍一下吗?


James:我们团队有四位工程师。我负责 C 语言的部分,其他人负责 Rust 的部分和测试方面的内容。


我们团队的成员都是公开的,你可以直接在 https://summa.one/ 上找到我和我的小伙伴们。


史迪仔:那您觉得多久可以完成这个项目呢?


James:我们已经写了一部分了,并且有一个完整的测试套件。当然还要很多工作要做,但是最困难的部分已经完成了。


史迪仔:赞。所以您觉得 Nervos Grants 计划怎么样?通过这样的计划可以吸引到更多的开发者加入 CKB 生态吗?


James:我们和 Zcash,Cosmos 等其他项目都有合作,我们也很开心可以和 Nervos 合作,Nervos 团队非常容易相处,Nervos Grants 计划也是非常有竞争力的


史迪仔:在做完这个项目之后,您有什么其他的想法或者项目想要在 CKB 上实现吗?


James:到目前为止,我们非常喜欢在 CKB 上开发。我们通过这个项目学到了很多,也有一些关于未来开发项目的想法。


我们目前还没有确切的计划,但是我们肯定会继续寻找合适的东西去进行开发。


史迪仔:很高兴今天可以采访您,期待在 2020 年,您能够来到中国,向中国的开发者分享更多的内容。


James:我很想来中国,当然也很高兴认识你。


Grants 具体内容


在此我也将 James 于 Nervos 论坛上发布的开发内容进行简洁地翻译,方便大家了解 James 的工作。


1. 一个针对 RISC-V 的最小化的 C 语言的库,可以:

  1. 解析和验证比特币区块头;
  2. 解析、验证和衡量比特币区块头的工作量;
  3. 验证交易被包含在 Merkle 证明中;
  4. 验证预先解析的比特币交易;
  5. 从交易中提取输入和输出的信息;


2. 广泛的测试,确保和其他版本 api 的兼容性。


3. 一个 CKB 锁定脚本示例,实现与比特币的无状态交换:

  1. 允许任何人以最小信任的方式出售 CKB 换取 BTC;
  2. 使用无状态 SPV 验证比特币支付;
  3. 从比特币交易解析 Nervos 交易信息;
  4. 不包括软件钱包或者能够进行交易的 UI 部件。


4. 一篇关于使用 libcheck 进行 C 单元测试,以及使用 CKB 核心库在 Rust 中测试 CKB 脚本的博文。



来自NervosCommunity
2020年01月23日 18:59图文分享