本文转载自微信公众号「区块链研究实验室 」,作者链三丰。转载本文请联系区块链研究实验室公众号。
本文将向大家提供有关区块链技术开发入门时应该了解的一切的简要概述,在这里给大家展示的是学习区块链应用程序开发的基础知识,由区块链提供支持的去中心化应用程序(Dapps)。
有许多不同的区块链为我们的Dapp提供动力,而最大的就是我们所知的以太坊。
为了与以太坊生态系统进行交互,则需要一个以太坊钱包和一些以太坊。Metamask,是最受欢迎的以太坊钱包之一。
以太坊钱包分为三个部分:
使用以太坊钱包与以太坊网络中的Dapp进行交互,假设您想将以太坊交易为另一种加密货币,您可以通过去中心化交易所Uniswap进行交易来做到这一点。
Uniswap由以太坊区块链提供支持,它基于智能合约所运行,而智能合约,它是区块链上的程序。
智能合约包括三个主要部分:
Dapp是用许多智能合约编写的,例如:Uniswap是由许多智能合约提供支持的Dapp。
Dapps在Web开发中可与后端或服务器端相媲美,客户端将连接到以太坊虚拟机上的智能合约,而不是连接到集中式服务器。
那么,我们如何为Dapp创建智能合约?
Solidity是一种用于EVM的高级编程语言,您可以在Solidity中编写智能合约。
我们将探索智能合约的一些基本语法和一般结构,然后将为自己的令牌编写一个简单的合同。
如果您熟悉另一种编程语言,您会发现一些问题,
这是您将在Solidity中使用的基本数据结构,
设置可见性是智能合约开发的重要组成部分,这样您的私人地址将不为公开,而这些关键字可以应用于变量和函数,
您将大量使用公共和私人的资源,拥有这些,我们就可以开始编写一些代码了。
首先,我们使用Pragma关键字声明solidity的版本,然后将Solidity指定为编译器以及什么版本。
让我们来看一个例子:
- pragma solidity >=0.4.22 <0.6.0;
这是开发过程中的重要一步,编写惊人的智能合约只是为了发现编译器不能与您使用的Solidity版本配合使用。
我们将为Medium创建一个令牌,我们称它为MediumToken。
接下来,我们需要实际声明合同。
- pragma solidity >=0.4.22 <0.6.0;
- contract MediumToken {
- }
这里只需添加令牌的基本结构即可。
智能合约需要具有构造函数,当我们的代码部署到区块链时,该功能将运行一次。
- pragma solidity >=0.4.22 <0.6.0;
- contract MediumToken {
- constructor() public {
- address owner = msg.sender;
- }
- }
在这里,我们声明的地址变量等于msg.sender,这是调用该函数的人员的地址。又是你
在构造函数中,我们需要做的另一件事是铸造MediumTokens,设置电源。
- pragma solidity >=0.4.22 <0.6.0;
- contract MediumToken {
- constructor() public {
- address owner = msg.sender;
- balance[owner] = 420; }
- }
此时您铸造了420个MediumToken,该数字是您想要的任何数字。构造函数运行后,我们需要创建所有余额的映射。
- pragma solidity >=0.4.22 <0.6.0;
- contract MediumToken {
- constructor() public {
- address owner = msg.sender;
- balance[owner] = 420; }
- mapping (address => uint256) public balances;
- }
这是一个公共映射,意味着任何人都可以看到它并与其进行交互。
接下来,我们需要编写一个函数,该函数将允许用户发送其MediumToken。
- pragma solidity >=0.4.22 <0.6.0;
- contract MediumToken {
- constructor() public {
- address owner = msg.sender;
- balance[owner] = 420; }
- mapping (address => uint256) public balances;
- function send(uint amount, address recipient) public {
- require(balances[msg.sender] >= amount);
- require(balances[msg.sender] -amount <= balances[msg.sender]); require(balances[recipient] + amount >= balances[recipient]);
- balances[msg.sender] -= amount; // Always subtract first balances[recipient] += amount; // Add amount to recipient
- }
- }
让我们分解一下,我们的send函数将接受uint形式的金额,它还可以接受收件人的地址,而且此功能将是公开的,因此任何人都可以看到它。
此时我们要做的第一件事是创建一些require语句,这样我们就可以检查发送者的钱包中是否确实有令牌数量。
另外2项要求声明是安全措施,第一个是确保发送方在发送令牌后的余额小于或等于;第二个是确保收款人的地址大于或等于交易前的地址。
- require(balances [msg.sender] -amount <= balances [msg.sender]);
如上述操作,我们创建了420个MediumToken,将它们分配给所有者,并创建了将其发送出去的功能!
如果您想再次查看它,这是完整的代码。
- pragma solidity >=0.4.22 <0.6.0;
- contract MediumToken {
- constructor() public {
- address owner = msg.sender;
- balance[owner] = 420; }
- mapping (address => uint256) public balances;
- function send(uint amount, address recipient) public {
- require(balances[msg.sender] >= amount);
- require(balances[msg.sender] -amount <= balances[msg.sender]); require(balances[recipient] + amount >= balances[recipient]);
- balances[msg.sender] -= amount; // Always subtract first balances[recipient] += amount; // Add amount to recipient
- }
- }
如果您完成了最终合同,您就可以将其部署到区块链上。
1.心若没有栖息的地方,到哪里都是在流浪。 2.一个人的失眠,一个人的空间,一...
本文转载自微信公众号前端先锋(jingchengyideng)。 Web 安全已经是 Web 开发中...
在追求高速的互联网时代,2013年真是遥远的年代了。那之后的3年内,中国诞生了数...
在前面的篇章中,我提到自从我转换了投资思路,用长线投资的方式投资之后,再也...
1.小时候画在手上的表没有动,却带走了我们最好的时光。 2.人哪有好的,只是坏...
图片来自 Pexels 这个网络中所有人的上网内容我都看的清清楚楚,是不是很可怕? ...
数字经济时代,人们对于支付安全性、便捷性的要求越来越高,法定数字货币的研发...
据Infobae报道,业内消息称阿根廷人最近几个月加密货币的购买量一直在提高。 指...
苹果与Facebook的数据隐私之战,让大家对数据隐私有了更多的关注。平均一个应用...
打着币圈第一大资金盘的幌子,利用区块链技术、以数字货币为交易媒介,进行网络...