接下来几天会来模拟一下,实际合约的案例,来更深入了解一下 solidity 语法
首先我们先设定一个 case
我们来实作发红包的功能,那发红包需要时做哪些功能呢?
那我们就看看下面的范例
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.7;
contract redpacket {
//定义此合约发红包的人
address payable public rich;
//定义要发几个红包
uint public number;
constructor(uint _number) payable {
rich = payable(msg.sender);
number = _number;
}
//取得发红包的人身上余额
function getBalance() public view returns (uint){
return address(this).balance;
}
//抢红包
function stakeMoney() public payable returns(bool){
//红包数须大於0
require(number>0);
//取得余额需要大於0
require(getBalance()>0);
number --;
//此方法是 random 100内的数字
uint random = uint(keccak256(abi.encode(block.timestamp,msg.sender,"rich")))%100;
uint balance = getBalance();
address payable someone = payable(msg.sender);
//把钱给抢到红包的人
someone.transfer(balance * random/100);
return true;
}
//合约销毁
function kill() public{
require(msg.sender == rich);
透过此function 可以拿来销毁合约
selfdestruct(rich);
}
}
<<: 前端工程师也能开发全端网页:挑战 30 天用 React 加上 Firebase 打造社群网站|Day27 无限卷动读取文章列表
Stacking Context 定义 Stacking Context是指对於HTML元素而言,有...
SysML 是一个图形的系统建模语言,他跟上一篇一样是来自喔卖尬集团 (Object Managem...
网页世界是由什麽组成? 上一篇有讲到网页三兄弟,其中有一个老大哥负责撑起这个世界,那就是 HTML...
经过了一天的奋斗,总算是把昨天做爆的LSTM修好了, 失败的可能原因可能为 资料未经过Normali...
BERT 全名为 Bidirectional Encoder Representations Fro...