智能合约是有弹性的,并且部署在区块链上的高度安全申请。
我们将建立用于众包项目的最聪明的竞选合同之一,并跟踪众包的支出习惯。
先决条件
- Remix
- 几乎没有牢固的知识
案例研究
在开始之前,让我们对Kickstarter进行案例研究。 Kickstarter是一个众包网站 虽然这是一个美丽的主意,但如果我们使用区块链技术建立此合同,我们将在Web3上遇到问题。
问题
- 谁制裁了资金在游泳池内的释放?
- 如果所有者在众包后摇摆并逃离资金怎么办?
- 我们如何交叉检查项目以查看众包的进展?
虽然这可能是一项艰巨的任务,但我们将创建一份智能合约,以考虑所有这些,并确保根据协议使用贡献者的资金。
如何?
首先,查看我们打算构建的图表。
经理呼吁合同要求供应商将所有人聚集在一起的资金。众包后,经理呼吁超过50%的贡献者必须批准的支出请求,但是如果经理要求向他的钱包提出请求。
我们如何补救这样的实例?
一旦获得批准,供应商帐户就会在请求支出请求并发送给该供应商而不是经理时填写在结构中。
保证了贡献者资金的责任和安全性。
我们将使用Remix IDE编写我们的智能合约,因此请单击here to Begin。
//SPDX-License-Identifier: MIT
pragma solidity ^0.4.17;
第一行告诉我们我们正在使用的许可证,MIT免费许可证。如果我们没有这个,我们的代码将出现错误。
Pragma Solidity告诉我们我们正在使用的版本;请注意,此版本必须与我们的编译器匹配,否则我们将获得错误符号。
在本文中,我们将使用0.4.17版本。
contract CrowdSource{
address public manager;
uint public MinimumContribution;
address[] public approvals;
for>
我们可以通过调用功能合同并提供CrowdSource 来创建合同。使用卷曲支架打开它。
我们称之为称为经理的变量,因为这是众包和合同呼叫者。
uint是一个类似于UINT256的无符号变量;我们希望任何人在贡献最低限制贡献时都将此功能公开。
我们创建了另一个称为地址批准的函数,但是使用[],所有进行最低限制的人都将保存在批准列表中。我们会尽快删除它,因为它昂贵且燃气密集。
function campaign(uint minimum)public{
manager = msg.sender;
kade10 }
for>
构造函数函数
构造函数或功能广告系列是第一个运行的功能,因为我们要确保只有经理才能调用合同。
请注意,我们公开看到合同的来电者。
msg.sender是一个通用变量,我们将其分配给管理器= msg.sender;每当合同被称为合同时,只要谁称合同是经理。
我们致电(UINT最低)public {这是成为贡献者所需的金额的无符号整数,我们可以拥有不同的最低限度或创建静态金额。
然后,我们可以在功能最小限制=最小值中调用;因此,在此处添加了为合同做出贡献的人 UINT公共最小贡献;
批准过程
当贡献者向合同支付最低款项时,批准职能将调用。
Chewing12 -Cold13 -Cold14 -cold11
要求功能会踢出任何未增加最小值贡献价值的人,并将贡献者推向批准列表。
接下来,我们介绍应付功能和批准变量,我们将明白为什么它们在智能合约中发挥重要作用。
请求资金
贡献者可以将资金寄入我们的合同中,但是我们无法将资金从请求功能中撤出,导致我们创建了 struct 。 struct是具有不同类型的键值对的集合。
contract CrowdSource{
struct request{
string description;
uint value;
address recipiant;
bool complete;
}
- 描述:字符串:请求的目的。
- value :uint:所需的金额。
- 收件人:地址:供应商的地址
我们在将其发送给供应商之前,创建一个构造作为请求,该请求也是结构类型。
struct不是一个实例,而是我们可以在整个项目中多次使用类型的定义。
测试合同
我们将在IDE中测试合同。
在混音上进行测试很简单。我们可以在左侧看到部署和运行交易。
- 环境
大约有四个不同的环境,但是大多数时候只会使用两个JavaScript VM(伦敦)并注入了Web3。
- 帐户
- 混音提供了15个免费帐户,我们可以用来部署合同并测试我们的部署。
- 天然气限制 - 天然气限制在部署合同时会复制实际的汽油费。合同中的每次部署或更改都会使我们收取汽油费,我们将在以后审查汽油费。
- 值 - 该价值是我们在部署合同时投入的基金。 WEI是最小的单元,而以太坊上使用的货币中最高的单位。
- 合同 - 合同的名称,在这种情况下是新的。 .sol是固体合同的文件格式。
- 部署 - 将合同部署到区块链网络中,以便我们可以与网络进行交互。
编译合同并单击部署,将在下面创建合同。
单击左侧的下拉按钮,然后查看完整的部署。
在我们的合同中,我们进行了读取UINT256的活动,这是一个无签名的整数;这是我们将捐款输入合同的部分,因此,将任何资金添加到合同中。
让我们测试它。
我们将将100wei放入广告系列的输入空间,但请记住更改上面的帐户,因此我们不会使合同经理成为贡献者。
使用另一个帐户和输入100wei。
单击广告系列,并注意右侧的一个面板,该小组变成绿色,这意味着资金已发送给合同。
数字1是经理部署的合同;注意地址以0x746 ..开始。
3号告诉我们,贡献者加入了合同。
结论
我们创建了一份众筹的智能合约,该合同允许用户群众资金,我们可以在区块链网络上部署此合同。
资源
Solidity Zero to Hero Course
Ethereum and Solidity: The Complete Developer's Guide
Learnhub
从我在Hackmamba上写的文章中摘录了