BSV 上基于智能合约的众筹

这篇具有很好参考价值的文章主要介绍了BSV 上基于智能合约的众筹。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们展示如何在 BSV 上开发众筹平台。与 Kickstarter 类似,资金要么是全部,要么什么都没有。也就是说,如果没有达到筹款目标,则保证资金返还。

BSV 上基于智能合约的众筹

与 Kickstarter 相比,我们的方法由智能合约自动执行,不需要将资金委托给受信任的第三方,并且费用低。

我们首先介绍一种传统的方法来实现这一点,然后介绍一个改进的版本。

第一次尝试:Lighthouse

早期的比特币开发者 Mike Hearn 建立了一个基于担保合约的众筹平台 Lighthouse。它使用 SIGHASH 标志 是 ALL | ANYONECANPAY.

BSV 上基于智能合约的众筹

ANYONECANPAY 输入可以被合并
  • ALL 确保所有资金都流向所需的接收者,并且总数恰好是某个目标。签名后无法更改收件人和目标,防止捐款被重定向。
  • ANYONECANPAY 确保每个贡献者都可以独立捐款。每个人都签署自己的输入并将部分交易交给接收者,接收者将所有输入合并到一个交易中并赎回资金。

请注意,在达到目标之前,输入值之和小于输出值,交易无效,收款人无法领取资金。

改进

上述众筹有几个缺点:

  1. 贡献者可以随时提取他的认捐资金
  2. 募集资金不得超额认购。即使人们想贡献超过目标,额外的金额也将作为费用支付给矿工,而不是支付给接受者。

为了改进,每个贡献者将他的资金锁定到以下合约中并广播包含它的交易。这锁定了他的资金,在截止日期之前不能撤回。

contract Crowdfund {
    // receiver of the fund
    PubKeyHash recepient;
    
    PubKey contributor;

    int deadline;
    
    // minimum amount to raise
    int target;

    // pledge fund
    public function pledge(SigHashPreimage txPreimage, int raisedAmount) {
        require(Tx.checkPreimage(txPreimage));

        // reach target
        require(raisedAmount >= this.target);

        // fund goes to the recepient
        bytes lockingScript = Utils.buildPublicKeyHashScript(this.recepient);
        
        bytes output = Utils.buildOutput(lockingScript, raisedAmount);
        require(hash256(output) == SigHash.hashOutputs(txPreimage));

    }

    // contributor can take the fund back after deadline
    public function refund(Sig sig, SigHashPreimage txPreimage) {
        require(Tx.checkPreimage(txPreimage));

        // fundraising expired
        require(SigHash.nLocktime(txPreimage) >= this.deadline);

        require(checkSig(sig, this.contributor));
    }
}

BSV 上的众筹

如果在截止日期之前筹集了足够的总资金,则受益人可以通过在第 13 行调用 pledge() 来收集所有已抵押的资金,如图 1 所示。否则,每个贡献者都可以在图 2 中的截止日期之后撤回他的资金,方法是在第 28 行调用 refund()

BSV 上基于智能合约的众筹

图 1:活动成功

BSV 上基于智能合约的众筹文章来源地址https://www.toymoban.com/news/detail-403274.html

图 2:活动失败

到了这里,关于BSV 上基于智能合约的众筹的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 使用预授权签名加速 BSV 有状态合约更新

    BSV 智能合约将状态存储在交易链的输出中。 当交易花费包含旧状态的输出并创建包含新状态的输出时,就会发生状态转换。 在任何给定时间,交易链末端的单个输出/UTXO 都具有最新状态。 当多个事务竞争同时更新共享状态时,就会出现问题。要了解原因,让我们考虑一个简

    2023年04月08日
    浏览(67)
  • BSV 上的点对点结算衍生品:远期合约

    远期合约是两方在特定未来时间以预定价格买卖资产的衍生工具。它是一种非常常见的对冲波动性的工具。因此,使用 USD 远期合约可以对冲 USD 兑 BSV 汇率的波动。 远期合约的收益图 例如,Alice 与 Bob 签订了一份 USD 远期合约。Alice 同意从现在起一个月后以每 BSV 100 USD 的价格

    2024年01月20日
    浏览(51)
  • 基于Remix+MetaMask部署智能合约

    由于论文迟迟没有进展,基础知识掌握不牢,今由重新拾起区块链的应用,研究了下节点连接和智能合约部署的一些操作。 基础知识: remix是用来部署智能合约的,metamask是可视化的钱包。 准备环境: 基于浏览器的Remix,网址为:http://remix.ethereum.org/ 。 MetaMask是一个基于Ch

    2024年02月07日
    浏览(38)
  • 基于区块链智能合约的疫苗溯源系统

    该系统基于以太坊的Solidity进行智能合约开发,并通过hardhat进行部署在了本机,通过Mocha和Chai进行了单元测试的编写,同时提供了一个基于React的前端界面与用户进行交互。 区块链的介绍 不难看出,区块链技术对现有的经济社会产生了巨大的影响。在未来,将会出现越来越多

    2024年02月15日
    浏览(34)
  • 基于openzeppelin编写solidity可升级的智能合约

            现代软件的设计原则是“敏捷开发,迅速迭代”,功能升级或bug修复是所有软件系统都要面对的问题。甚至可以说软件质量在很大程度上依赖于升级和修补源代码的能力。当然Dapp(去中心化应用)也不例外,尤其Dapp一切都是透明的,这使得任何级别的bug都会被成

    2024年01月18日
    浏览(48)
  • 基于以太坊的智能合约开发Solidity(基础篇)

    参考教程:基于以太坊的智能合约开发教程【Solidity】_哔哩哔哩_bilibili (1)程序编译完成后,需要在虚拟机上运行,将合约部署好后便可执行刚刚编写的函数。(注意, 合约一旦部署,就会永久存在于区块链上,且不可篡改 ,不过可以销毁) (2)执行完成后,可以得到以

    2024年02月04日
    浏览(56)
  • ApeWorX: 新的基于 Python 语言的智能合约开发框架

    Brownie 是 Python 开发人员经常使用智能合约框架。 现在出现了一个 Brownie 的继任者,可以让 Python Web3 开发人员获得更好的体验。 在本文中,我将讨论这个 Brownie 的继任者 ApeWorX,也称为“Ape”。 ApeWorX 是一个基于 Python 的智能合约开发和部署框架,有很强的可定制性和安全的

    2024年02月05日
    浏览(43)
  • 基于以太坊的智能合约开发Solidity(事件&日志篇)

    (1)事件用于记录在区块链上的特定活动,“emit ValueChanged(newValue);”语句的作用是触发ValueChanged事件(首先需要声明事件)。 ①触发事件后会生成相应日志,上图黄框就是“emit ValueChanged(newValue);”语句产生的日志,其中“form”指的是触发事件的合约账户。 ②事件主要是供

    2024年02月04日
    浏览(42)
  • 基于以太坊的智能合约开发Solidity(内存&结构体篇)

    参考教程:【内存、引用与持久化存储】1、内存与区块链——storage与memory原理_哔哩哔哩_bilibili (1)所有的复杂类型,即数组、结构和映射类型,都有一个额外属性——“数据位置”,用来说明数据是保存在内存memory中还是存储storage中,保存在memory中的数据,在函数执行完

    2024年02月04日
    浏览(56)
  • 基于Fisco-Bcos的区块链智能合约-简单案例实践

    智能合约是指把合同/协议条款以代码的形式电子化地放到区块链网络上。FISCO BCOS平台支持两种智能合约类型:Solidity智能合约与预编译智能合约 Solidity与Java类似。代码写好后,都需要通过编译器将代码转换成二进制,在Java中,编译器是Javac,而对于Solidity,是solc。生成后的

    2024年02月09日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包