自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

聊一聊區(qū)塊鏈技術(shù)的開發(fā)

區(qū)塊鏈
本文將向大家提供有關(guān)區(qū)塊鏈技術(shù)開發(fā)入門時(shí)應(yīng)該了解的一切的簡(jiǎn)要概述,在這里給大家展示的是學(xué)習(xí)區(qū)塊鏈應(yīng)用程序開發(fā)的基礎(chǔ)知識(shí),由區(qū)塊鏈提供支持的去中心化應(yīng)用程序(Dapps)。

[[396445]]

本文轉(zhuǎn)載自微信公眾號(hào)「區(qū)塊鏈研究實(shí)驗(yàn)室 」,作者鏈三豐。轉(zhuǎn)載本文請(qǐng)聯(lián)系區(qū)塊鏈研究實(shí)驗(yàn)室公眾號(hào)。

概述

本文將向大家提供有關(guān)區(qū)塊鏈技術(shù)開發(fā)入門時(shí)應(yīng)該了解的一切的簡(jiǎn)要概述,在這里給大家展示的是學(xué)習(xí)區(qū)塊鏈應(yīng)用程序開發(fā)的基礎(chǔ)知識(shí),由區(qū)塊鏈提供支持的去中心化應(yīng)用程序(Dapps)。

有許多不同的區(qū)塊鏈為我們的Dapp提供動(dòng)力,而最大的就是我們所知的以太坊。

為了與以太坊生態(tài)系統(tǒng)進(jìn)行交互,則需要一個(gè)以太坊錢包和一些以太坊。Metamask,是最受歡迎的以太坊錢包之一。

以太坊錢包分為三個(gè)部分:

  • 以太坊賬戶-可以發(fā)送和接收以太坊的實(shí)體
  • 公鑰-用戶可以將以太坊發(fā)送給的地址
  • 私鑰—訪問您的以太坊

使用以太坊錢包與以太坊網(wǎng)絡(luò)中的Dapp進(jìn)行交互,假設(shè)您想將以太坊交易為另一種加密貨幣,您可以通過去中心化交易所Uniswap進(jìn)行交易來(lái)做到這一點(diǎn)。

Uniswap由以太坊區(qū)塊鏈提供支持,它基于智能合約所運(yùn)行,而智能合約,它是區(qū)塊鏈上的程序。

智能合約包括三個(gè)主要部分:

  • 用戶-使用智能合約的人。
  • 代碼-使用智能合約時(shí)會(huì)發(fā)生什么。
  • 存儲(chǔ)-智能合約將更改的對(duì)象。

Dapp是用許多智能合約編寫的,例如:Uniswap是由許多智能合約提供支持的Dapp。

Dapps在Web開發(fā)中可與后端或服務(wù)器端相媲美,客戶端將連接到以太坊虛擬機(jī)上的智能合約,而不是連接到集中式服務(wù)器。

那么,我們?nèi)绾螢镈app創(chuàng)建智能合約?

引入Solidity

Solidity是一種用于EVM的高級(jí)編程語(yǔ)言,您可以在Solidity中編寫智能合約。

我們將探索智能合約的一些基本語(yǔ)法和一般結(jié)構(gòu),然后將為自己的令牌編寫一個(gè)簡(jiǎn)單的合同。

如果您熟悉另一種編程語(yǔ)言,您會(huì)發(fā)現(xiàn)一些問題,

  • 布爾值—正確或錯(cuò)誤
  • Uint —整數(shù)(數(shù)字確定X冪的大小)
  • 地址-以太坊地址
  • 字符串—文本

這是您將在Solidity中使用的基本數(shù)據(jù)結(jié)構(gòu),

  • 數(shù)組-從零開始的項(xiàng)目列表(可以是固定數(shù)字或動(dòng)態(tài)數(shù)字)
  • 映射—存儲(chǔ)具有鍵值對(duì)的數(shù)據(jù)
  • 結(jié)構(gòu)-用于定義存儲(chǔ)變量的新方法
  • 枚舉-創(chuàng)建自己的數(shù)據(jù)結(jié)構(gòu)

設(shè)置可見性是智能合約開發(fā)的重要組成部分,這樣您的私人地址將不為公開,而這些關(guān)鍵字可以應(yīng)用于變量和函數(shù),

  • 公開-任何人都可以調(diào)用此功能
  • 私人-只有合同可以調(diào)用此功能
  • 查看—此函數(shù)返回?cái)?shù)據(jù)且不修改數(shù)據(jù)
  • 純-函數(shù)將不會(huì)修改,甚至不會(huì)讀取合同的數(shù)據(jù)
  • 應(yīng)付賬款—功能可以接收以太坊

您將大量使用公共和私人的資源,擁有這些,我們就可以開始編寫一些代碼了。

制作MediumToken

首先,我們使用Pragma關(guān)鍵字聲明solidity的版本,然后將Solidity指定為編譯器以及什么版本。

讓我們來(lái)看一個(gè)例子:

  1. pragma solidity >=0.4.22 <0.6.0; 

這是開發(fā)過程中的重要一步,編寫驚人的智能合約只是為了發(fā)現(xiàn)編譯器不能與您使用的Solidity版本配合使用。

我們將為Medium創(chuàng)建一個(gè)令牌,我們稱它為MediumToken。

接下來(lái),我們需要實(shí)際聲明合同。

  1. pragma solidity >=0.4.22 <0.6.0; 
  2. contract MediumToken { 

這里只需添加令牌的基本結(jié)構(gòu)即可。

智能合約需要具有構(gòu)造函數(shù),當(dāng)我們的代碼部署到區(qū)塊鏈時(shí),該功能將運(yùn)行一次。

  1. pragma solidity >=0.4.22 <0.6.0; 
  2. contract MediumToken { 
  3. constructor() public { 
  4. address owner = msg.sender; 
  5.     } 

在這里,我們聲明的地址變量等于msg.sender,這是調(diào)用該函數(shù)的人員的地址。又是你

在構(gòu)造函數(shù)中,我們需要做的另一件事是鑄造MediumTokens,設(shè)置電源。

  1. pragma solidity >=0.4.22 <0.6.0; 
  2. contract MediumToken { 
  3. constructor() public { 
  4. address owner = msg.sender; 
  5. balance[owner] = 420;   } 

此時(shí)您鑄造了420個(gè)MediumToken,該數(shù)字是您想要的任何數(shù)字。構(gòu)造函數(shù)運(yùn)行后,我們需要?jiǎng)?chuàng)建所有余額的映射。

  1. pragma solidity >=0.4.22 <0.6.0; 
  2. contract MediumToken { 
  3. constructor() public { 
  4. address owner = msg.sender; 
  5. balance[owner] = 420;   } 
  6. mapping (address => uint256) public balances; 

這是一個(gè)公共映射,意味著任何人都可以看到它并與其進(jìn)行交互。

接下來(lái),我們需要編寫一個(gè)函數(shù),該函數(shù)將允許用戶發(fā)送其MediumToken。

  1. pragma solidity >=0.4.22 <0.6.0; 
  2. contract MediumToken { 
  3. constructor() public { 
  4. address owner = msg.sender; 
  5. balance[owner] = 420;   } 
  6. mapping (address => uint256) public balances; 
  7. function send(uint amount, address recipient) public { 
  8. require(balances[msg.sender] >= amount); 
  9. require(balances[msg.sender] -amount <= balances[msg.sender]);  require(balances[recipient] + amount >= balances[recipient]); 
  10. balances[msg.sender] -= amount; // Always subtract first  balances[recipient] += amount; // Add amount to recipient 
  11.     } 

讓我們分解一下,我們的send函數(shù)將接受uint形式的金額,它還可以接受收件人的地址,而且此功能將是公開的,因此任何人都可以看到它。

此時(shí)我們要做的第一件事是創(chuàng)建一些require語(yǔ)句,這樣我們就可以檢查發(fā)送者的錢包中是否確實(shí)有令牌數(shù)量。

另外2項(xiàng)要求聲明是安全措施,第一個(gè)是確保發(fā)送方在發(fā)送令牌后的余額小于或等于;第二個(gè)是確保收款人的地址大于或等于交易前的地址。

  1. require(balances [msg.sender] -amount <= balances [msg.sender]); 

如上述操作,我們創(chuàng)建了420個(gè)MediumToken,將它們分配給所有者,并創(chuàng)建了將其發(fā)送出去的功能!

如果您想再次查看它,這是完整的代碼。

  1. pragma solidity >=0.4.22 <0.6.0; 
  2. contract MediumToken { 
  3. constructor() public { 
  4. address owner = msg.sender; 
  5. balance[owner] = 420;   } 
  6. mapping (address => uint256) public balances; 
  7. function send(uint amount, address recipient) public { 
  8. require(balances[msg.sender] >= amount); 
  9. require(balances[msg.sender] -amount <= balances[msg.sender]);  require(balances[recipient] + amount >= balances[recipient]); 
  10. balances[msg.sender] -= amount; // Always subtract first  balances[recipient] += amount; // Add amount to recipient 
  11.     } 

 

如果您完成了最終合同,您就可以將其部署到區(qū)塊鏈上。

 

責(zé)任編輯:武曉燕 來(lái)源: 區(qū)塊鏈研究實(shí)驗(yàn)室
相關(guān)推薦

2018-06-25 09:32:44

2022-11-01 08:46:20

責(zé)任鏈模式對(duì)象

2018-11-29 09:13:47

CPU中斷控制器

2016-08-03 13:36:01

2020-08-12 08:34:16

開發(fā)安全We

2018-04-04 14:43:27

虛擬機(jī)保護(hù)技術(shù)

2022-07-28 10:39:31

工業(yè)4.0供應(yīng)鏈

2019-03-20 14:29:46

Linux虛擬內(nèi)存

2020-11-06 07:10:21

5G定位

2021-06-30 07:19:35

微服務(wù)業(yè)務(wù)MySQL

2023-07-06 13:56:14

微軟Skype

2024-03-08 09:51:12

Linux網(wǎng)絡(luò)性能

2020-09-08 06:54:29

Java Gradle語(yǔ)言

2022-02-09 16:23:07

網(wǎng)絡(luò)安全零信任技術(shù)

2022-06-17 11:03:11

5G安全隱私

2021-01-28 22:31:33

分組密碼算法

2023-09-22 17:36:37

2020-05-22 08:16:07

PONGPONXG-PON

2018-06-07 13:17:12

契約測(cè)試單元測(cè)試API測(cè)試

2017-06-29 13:22:15

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)