IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> BSV 上基于智能合约的众筹 -> 正文阅读

[区块链]BSV 上基于智能合约的众筹

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

在这里插入图片描述

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

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

第一次尝试:Lighthouse

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

在这里插入图片描述

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()

在这里插入图片描述

图 1:活动成功

在这里插入图片描述

图 2:活动失败
  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 12:02:40  更:2022-10-31 12:02:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 21:40:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计