国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

經(jīng)典智能合約案例之發(fā)紅包

這篇具有很好參考價(jià)值的文章主要介紹了經(jīng)典智能合約案例之發(fā)紅包。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

經(jīng)典智能合約案例:發(fā)紅包

角色分析:發(fā)紅包的人和搶紅包的人

功能分析:

  • 發(fā)紅包:發(fā)紅包的功能,可以借助構(gòu)造函數(shù)實(shí)現(xiàn),核心是將ether打入合約;

  • 搶紅包:搶紅包的功能,搶成功需要一些斷言判斷,核心操作是合約轉(zhuǎn)賬給搶紅包的人;

  • 退還:當(dāng)紅包有剩余的時(shí)候,允許發(fā)紅包的人收回余額,可以用合約銷(xiāo)毀來(lái)實(shí)現(xiàn);

實(shí)現(xiàn)發(fā)紅包功能

  • 需要一個(gè)有支付功能的地址,用于發(fā)紅包(誰(shuí)創(chuàng)建合約,誰(shuí)就是發(fā)紅包的人)

  • 需要傳入一個(gè)紅包的數(shù)量(number),紅包的金額從msg.value傳入

  • 在構(gòu)造函數(shù)中,指定發(fā)紅包的人和紅包數(shù)量

  • 需要一個(gè)查詢(xún)紅包余額的功能函數(shù)(提示:address(this).balance)

實(shí)現(xiàn)搶紅包的功能

  • 需要一個(gè)給搶紅包的人轉(zhuǎn)賬的功能函數(shù)

  • 函數(shù)中需要判斷:1. 紅包余額大于0; 2. 紅包剩余個(gè)數(shù)大于0;(提示:斷言)

  • 紅包數(shù)量隨著函數(shù)執(zhí)行的次數(shù)相應(yīng)減少;

  • 搶紅包的金額采用隨機(jī)的方式(提示:用keccak256函數(shù)計(jì)算當(dāng)前時(shí)間戳的哈希),紅包的金額是100以?xún)?nèi)的數(shù)(提示:哈希值對(duì)100取余)

  • 轉(zhuǎn)賬功能:msg.sender.transfer(amount) (amount為金額);

實(shí)現(xiàn)退還紅包余額

  • 可以借助selfdestruct函數(shù),用于銷(xiāo)毀合約,其原型如下:

    function selfdestruct(address user)

  • user代表合約銷(xiāo)毀時(shí)的受益人;

  • 實(shí)現(xiàn)一個(gè)kill函數(shù),用它來(lái)銷(xiāo)毀合約,指定發(fā)紅包的人為受益人;

合約代碼:

pragma solidity ^0.6.1;

contract red_pocket{
    uint256 public number;
    address payable public pocket_sender;
    mapping(address => bool) isGot;
    // Send red packets
    // Specify the person and the number of red envelopes
    constructor(uint256 count) public payable{
        require(msg.value > 0, "msg.value must >0");
        require(count > 0, "count must > 0");
        number = count;
        pocket_sender = msg.sender;
    }

    // Query the balance of the red envelope
    function getBalance() public view returns(uint256){
        return address(this).balance;
    }

    // GetPocket
    function getPocket() public payable {
        require(!isGot[msg.sender],"msg.sender must not get");
        require(number > 0, "number must >0");
        require(getBalance() > 0, "getBalance() must > 0");
        uint256 amount = uint256 (keccak256(abi.encode(msg.sender,pocket_sender,now,number)))%100;
        msg.sender.transfer(amount);
        number --;
        isGot[msg.sender] = true;
    }

    // Refund the balance of the red envelope
    function kill() public{
        selfdestruct(pocket_sender);
    }
}

合約執(zhí)行截圖:

首先deploy該紅包合約:

智能合約設(shè)計(jì)案例,區(qū)塊鏈原理,智能合約,區(qū)塊鏈

在搶紅包之前先查詢(xún)一下相關(guān)的信息:

可見(jiàn)總額度為20230324wei,按照delpoy,一共是6個(gè)紅包,發(fā)送者的地址如下:

智能合約設(shè)計(jì)案例,區(qū)塊鏈原理,智能合約,區(qū)塊鏈

然后進(jìn)行搶紅包:

可見(jiàn),總額度相應(yīng)減少,紅包的個(gè)數(shù)也減少1。

智能合約設(shè)計(jì)案例,區(qū)塊鏈原理,智能合約,區(qū)塊鏈

最后,kill銷(xiāo)毀合約,實(shí)現(xiàn)退還紅包余額。

智能合約設(shè)計(jì)案例,區(qū)塊鏈原理,智能合約,區(qū)塊鏈文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-725969.html

到了這里,關(guān)于經(jīng)典智能合約案例之發(fā)紅包的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 螞蟻區(qū)塊鏈投票案例(二)---投票合約設(shè)計(jì)開(kāi)發(fā)

    螞蟻區(qū)塊鏈投票案例(二)---投票合約設(shè)計(jì)開(kāi)發(fā)

    計(jì)劃用三篇文章,一個(gè)月左右的時(shí)間來(lái)實(shí)現(xiàn)一個(gè)螞蟻開(kāi)放聯(lián)盟鏈上的區(qū)塊鏈投票案例,本文是系列第二篇。 螞蟻區(qū)塊鏈投票案例(一)—螞蟻鏈簡(jiǎn)介 螞蟻區(qū)塊鏈投票案例(二)—投票合約設(shè)計(jì)開(kāi)發(fā) 螞蟻區(qū)塊鏈投票案例(三)—Java調(diào)用部分實(shí)現(xiàn)(整理中) 本文將結(jié)合具體的投票案例

    2024年02月04日
    瀏覽(19)
  • 區(qū)塊鏈和人工智能的關(guān)系以及經(jīng)典案例

    區(qū)塊鏈和人工智能的關(guān)系以及經(jīng)典案例

    ???????? 目錄 1.區(qū)塊鏈與人工智能的關(guān)系 2.應(yīng)用案例:基于區(qū)塊鏈的醫(yī)療數(shù)據(jù)共享平臺(tái) 2.1背景 2.2方案 2.3優(yōu)勢(shì) 2.4挑戰(zhàn) ????????區(qū)塊鏈技術(shù)和人工智能(AI)是兩種不同的技術(shù),但它們之間存在著互補(bǔ)關(guān)系。區(qū)塊鏈技術(shù)提供了一種安全、透明、去中心化的數(shù)據(jù)存儲(chǔ)和傳輸

    2024年03月13日
    瀏覽(15)
  • 《區(qū)塊鏈原理與技術(shù)》學(xué)習(xí)筆記(四) ——以太坊的基本架構(gòu)、賬戶(hù)模型和智能合約

    《區(qū)塊鏈原理與技術(shù)》學(xué)習(xí)筆記(四) ——以太坊的基本架構(gòu)、賬戶(hù)模型和智能合約

    《區(qū)塊鏈原理與技術(shù)》學(xué)習(xí)筆記 第四部分 三、以太坊 1. 以太坊簡(jiǎn)介 1.1 以太坊發(fā)展的階段 1.2 以太坊與比特幣對(duì)比 2. 以太坊的基本架構(gòu)及原理 2.1 基本概念 2.2 狀態(tài)轉(zhuǎn)移 2.3 基本架構(gòu) 3. 賬戶(hù)模型與轉(zhuǎn)賬 3.1 賬戶(hù)模型 4. 智能合約 4.1 合約賬戶(hù)與數(shù)據(jù)存儲(chǔ) 4.2 驅(qū)動(dòng)智能合約 以太坊

    2024年02月13日
    瀏覽(59)
  • 北京大學(xué)肖臻老師《區(qū)塊鏈技術(shù)與應(yīng)用》公開(kāi)課筆記:以太坊原理(三):智能合約

    北京大學(xué)肖臻老師《區(qū)塊鏈技術(shù)與應(yīng)用》公開(kāi)課筆記:以太坊原理(三):智能合約

    9、ETH-智能合約 智能合約是以太坊的精髓,也是以太坊和比特幣一個(gè)最大的區(qū)別 1)、什么是智能合約 智能合約的本質(zhì)是運(yùn)行在區(qū)塊鏈上的一段代碼,代碼的邏輯定義了智能合約的內(nèi)容 智能合約的賬戶(hù)保存了合約當(dāng)前的運(yùn)行狀態(tài) balance:當(dāng)前余額 nonce:交易次數(shù) code:合約代

    2024年01月20日
    瀏覽(25)
  • 【區(qū)塊鏈 | 智能合約】Ethereum源代碼(3)- 以太坊RPC通信實(shí)例和原理代碼分析(上)

    上一節(jié)提到,以太坊在node start的時(shí)候啟動(dòng)了RPC服務(wù),以太坊通過(guò)Rpc服務(wù)來(lái)實(shí)現(xiàn)以太坊相關(guān)接口的遠(yuǎn)程調(diào)用。這節(jié)我們用個(gè)實(shí)例來(lái)看看以太坊 RPC是如何工作的,以及以太坊RPC的源碼的實(shí)現(xiàn) 1,RPC啟動(dòng)命令 : go-ethereum的RPC服務(wù)默認(rèn)地址:http://localhost:8545/ 通過(guò)以下命令修改默認(rèn)地

    2024年02月02日
    瀏覽(35)
  • 8. Fabric2.2 區(qū)塊鏈農(nóng)產(chǎn)品溯源系統(tǒng) - 智能合約設(shè)計(jì)

    根據(jù)上小節(jié)的需求分析與方案設(shè)計(jì)來(lái)進(jìn)行智能合約的設(shè)計(jì)。 智能合約設(shè)計(jì)最核心的是存儲(chǔ)字段的設(shè)計(jì)、也就是索引設(shè)計(jì),F(xiàn)abric 常見(jiàn)的時(shí)間狀態(tài)存儲(chǔ)引擎是LevelDB 或 CouchDB,這兩個(gè)數(shù)據(jù)庫(kù)是KV存儲(chǔ),KV存儲(chǔ)不像SQL類(lèi)型存儲(chǔ),一張表創(chuàng)建多個(gè)字段,多個(gè)字段索引可以進(jìn)行各種復(fù)查詢(xún)

    2023年04月08日
    瀏覽(28)
  • 【區(qū)塊鏈 | 智能合約】Ethereum源代碼 - 智能合約地址生成算法

    當(dāng)提交智能合約部署后,會(huì)返回智能合約的地址。智能合約地址的生成邏輯在eth.api.go的submitTransaction函數(shù)中:

    2024年02月13日
    瀏覽(17)
  • 區(qū)塊鏈java開(kāi)發(fā)智能合約nf(部署第一個(gè)NFT智能合約)

    手把手教你區(qū)塊鏈java開(kāi)發(fā)智能合約nft-第二篇(部署第一個(gè)NFT智能合約) 剛搞區(qū)塊鏈開(kāi)發(fā)真的是太累了,自己摸石頭過(guò)河,動(dòng)不動(dòng)就報(bào)錯(cuò),網(wǎng)上搜索錯(cuò)誤,一律看不出什么問(wèn)題,或者報(bào)錯(cuò)的信息太少,問(wèn)同事同事不鳥(niǎo),問(wèn)領(lǐng)導(dǎo),領(lǐng)導(dǎo)也煩,無(wú)奈,對(duì)于英文不好的我,只能被迫

    2024年02月12日
    瀏覽(30)
  • 區(qū)塊鏈智能合約代碼示例

    ????????以下是一個(gè)簡(jiǎn)單的區(qū)塊鏈智能合約代碼示例: 該合約具有以下功能: 定義了一個(gè)名為 SimpleContract 的合約。 定義了一個(gè)名為 myData 的公共整數(shù)變量。 定義了一個(gè)名為 setMyData 的公共函數(shù),該函數(shù)接受一個(gè) uint 類(lèi)型的參數(shù) newData,并將其設(shè)置為 myData 的新值。 在 So

    2024年02月14日
    瀏覽(22)
  • 區(qū)塊鏈與智能合約

    要想理解什么區(qū)塊鏈,我們先來(lái)從本質(zhì)上認(rèn)識(shí)一下它 區(qū)塊鏈:本質(zhì)上是一個(gè)去中心化的分布式賬本數(shù)據(jù)庫(kù),是指通過(guò)去中心化和去信任的方式集體維護(hù)一個(gè)可靠數(shù)據(jù)庫(kù)的技術(shù)方法。 沒(méi)有基礎(chǔ)的人可能理解起來(lái)有點(diǎn)困難,我們來(lái)解釋一下里邊的名詞 分布式賬本數(shù)據(jù)庫(kù):了解過(guò)

    2024年03月26日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包