Babylon 质押交易脚本

这篇具有很好参考价值的文章主要介绍了Babylon 质押交易脚本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Babylon BTC Staking

Babylon 的质押交易本质就是一笔BTC的交易,不过这笔交易是基于Taproot 的 Script 的交易

Taproot

Taproot是比特币网络的一次重大升级。这一升级在2021年11月激活,旨在提升比特币隐私性,提高交易效率,并扩展比特币的智能合约功能。
下面是Taproot升级的主要特性:
提升隐私性:不论是复杂的智能合约还是简单的比特币转账,所有这些操作在链上看起来一样。这降低了区分不同交易类型的可能性,提高了隐私性。
优化存储和带宽:通过另一种公钥和签名的方式(Schnorr签名),Taproot升级可以有效减小交易的数据量,这就降低了存储和网络传输的负担。
扩展智能合约功能:Taproot包含了对Merkle抽象语法树(MAST)的实现,这使得比特币能够创建更复杂的智能合约,而且不同于现有的支付到脚本哈希(P2SH)交易,MAST允许用户按需选择性的公开部分脚本,提高了隐私性和效率。
改进灵活性:Taproot的设计让未来的升级更具灵活性,容易添加新的功能。

Babylon BTC 质押的锁定脚本

下面主要描述Taproot通过MAST构建一笔包含多脚本的交易,以Babylon BTC 质押交易为例
当前Babylon 质押所使用到的锁定脚本

  • TimeLockScript

OP_CHECKSIGVERIFY OP_CHECKSEQUENCEVERIFY

  • SingleSigScript

OP_CHECKSIGVERIFY

  • MulSigScript

OP_CHECKSIGADD … OP_CHECKSIGADD threshold OP_GREATERTHANOREQUAL OP_VERIFY

Babylon质押交易的三个锁定路径

  • TimeLockPathScript:当达到指定的锁定高度以后,staker 可以花费此输出
    使用TImeLockScript
  • UnboundingPathScript:staker 主动解质押,script 包含两个锁定脚本
unbondingPathScript := aggregateScripts(
  stakerSigScript,
  covenantMultisigScript,
)
stakerSigScript:staker 的单签名锁定脚本
covenantMultisigScript:convenant 委员会的多签
  • SlashingPathScript: 罚没的脚本,由Babylon 节点监控,自动发起;该脚本包含三个锁定脚本
slashingPathScript := aggregateScripts(
  stakerSigScript,
  fpSigScript,
  covenantMultisigScript,
)
stakerSigScript:BTC 质押者的单签脚本
fpSigScript:finality provider 的多签脚本,staker 可以质押到多个finality provider,多签阈值是  1
covenantMultisigScript: convenant 委员会的多签,阈值从babylon节点获取

由于质押交易是需要通过Script Path(非 Key Path)来解锁,所以Key 就可以取任意值,BIP341 文档中给的值为

0x50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0

Babylon 也默认使用该值作为internal pubkey

MAST 构建脚本的方式

构建
三个锁定脚本全为叶子节点,从叶子节点开始,逐渐构建二叉树如下:

Babylon 质押交易脚本,区块链

实际的交易输出地址为:

  • outputkey = txscript.ComputeTaprootOutputKey(internal_pubkey,S[:])
    address = btcutil.NewAddressTaproot(schnorr.SerializePubKey(outputKey), net)

  • 输出脚本为:
    pkScript = txscript.PayToAddrScript(taprootAddress)

  • output为:
    output = wire.NewTxOut(int64(stakingAmount), taprootPkScript)

花费
以A = TimeLockScript 路径验证,则需要提供 3 个witness

  1. staker sig
  2. TimeLockScript
  3. ControlBlock
    ControlBlock 需要包含一下内容

验证时需要满足通过 ControlBlock + TimeLockScript + internal_pubkey 能够重新计算出 outputkey
比较outputkey 与从 output 地址中获取的 outputkey 是否一致,若不一致则验证失败,交易失败
如一直,则将TimeLockScript 作为验证脚本,将staker sig 压入栈中,根据TimeLockScript验证栈中信息,直至验证完成。

注:当前交易构建的方式就满足了隐私性,通过交易的输出output并不能识别出任何有效信息,包括脚本信息,所以此种情况下也必须完全记录所有脚本的情况,忘记构建时的脚本就意味着该输出无法被花费文章来源地址https://www.toymoban.com/news/detail-845275.html

到了这里,关于Babylon 质押交易脚本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解析 ETH 区块数据交易input

    这里使用了一个开源项目:https://github.com/rvullriede/evm-abi-decoder 在pom中添加依赖即可: 这个jar需要jdk11,想使用jdk8的同学可以把项目中net.osslabz.evm.abi.definition.AbiDefinition#fromJson(java.lang.String) 的入参 Files.readString(Path.of(abiFilePath)) 改一下,这个Files.readString(Path.of(abiFilePath)) 方法只

    2024年02月22日
    浏览(35)
  • 比特币如何运作?区块链、网络、交易

    免责声明:观点来自原文作者,与本人无关,文章仅供参考学习,请自行辨别真伪,切勿跟风,风险自担。 翻译原文:https://www.blockpit.io/blog/how-does-bitcoin-work 比特币是一种革命性的数字货币,由化名中本聪的匿名人士或团体于 2008 年发明。它是世界上第一个加密货币,负责将

    2024年03月24日
    浏览(38)
  • 区块链中的交易是什么意思

    id:BSN_2021 公众号:BSN研习社 关于区块链,交易是一个绕不开的话题。区块链可以看做一个不断实时同步的分布式账本,在这个账本上,每一个动作都可以算作一笔“交易”。正是一笔笔交易,才构成了账本的全部。 关于交易,有很多基础术语需要我们了解。 交易/Transaction

    2024年02月06日
    浏览(47)
  • 交易的流动——从钱包到区块链网络

    是否经常会好奇我在钱包上生成的交易是如何一步步流入区块链网络,并最终成为区块的一部分呢? 要想弄清这个问题,首先要搞清楚钱包的工作原理,以主流钱包MetaMask为例,在我们添加一个新的网络时,会需要填写以下信息。MetaMask在会为预置的网络填好这些信息,使用

    2024年02月15日
    浏览(32)
  • 区块链溯源:实现区块链技术在房地产交易中的应用

    作者:禅与计算机程序设计艺术 随着时间的推移,金融系统已越来越复杂。从最早的结算系统到现代支付系统、征信管理系统、风控系统,现代金融系统已经发生了巨变,而在房地产市场中,由于金融服务的需求增加,更多的客户选择居住地或商业中心进行投资,由此带来的

    2024年02月14日
    浏览(34)
  • PHP从零实现区块链(网页版四)交易1

    源码地址:PHP从零实现区块链(四)交易1 - 简书 注:本例只是从网页版实现一下原理,源码非本人所写,只是将原帖的源码更改了一下,变成网页版 开始这个例子前,先解释一些概念以及统一命名叫法,这样便于理解代码。 1. 这里的交易是采用UXTO模式 。这也是比特币中采

    2024年01月21日
    浏览(35)
  • 区块链中如何验证交易存在? 如何验证交易不存在?Merkel Proof和Merkel Tree的应用——中山大学软件工程学院专选课《区块链》课堂小测

    Merkle Proof 是一种用于验证区块链中某一特定交易确实存在于某一区块内的机制。这一机制是基于 Merkle Tree(默克尔树)的结构来进行的。 默克尔树是一种二叉树,其中每个叶节点是某个交易的哈希值,每个非叶节点是其子节点哈希值合并后再哈希的结果。 验证步骤: 找到交

    2024年02月08日
    浏览(37)
  • 区块链交易隐私如何保证?华为零知识证明技术实战解析

    【摘要】 零知识证明技术不管应用于金融还是其他领域,都可以对隐私保护,性能提升,或者安全性等场景带来很多帮助。本文通过介绍华为如何在同态加密及零知识证明框架的集成介绍来介绍了一些对金融领域交易隐私保护的思路,通过代码结和应用场景描述了zksnark如何

    2024年01月19日
    浏览(33)
  • 区块链学习5-长安链并发测试(3)_发送并发交易请求

    区块链学习4-长安链并发测试(2)_部署链_fvafuc的博客-CSDN博客 参考官方文档: https://docs.chainmaker.org.cn/quickstart/通过命令行体验链.html#cmc 修改cmc的sdk_config.yml,使其连接到指定的一个或多个节点: 参考官方文档: https://docs.chainmaker.org.cn/quickstart/通过命令行体验链.html#id14 ​ ​

    2024年02月02日
    浏览(30)
  • 波场(Tron)监控区块交易记录(http 版本,不依赖 sdk)

    做项目的时候经常需要通过监控链的区块交易记录,然后根据交易记录与用户的地址进行核对,从而得知用户地址的充币和提币的情况。 引用依赖 这段代码运行的时候,首选是获取的最新的区块高度(接口 getnowblock),然后逐个累加(接口 getblockbynum)区块进行检查,核对交

    2024年01月18日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包