偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

[[396445]]

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

概述

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

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

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

以太坊錢包分為三個部分:

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

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

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

智能合約包括三個主要部分:

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

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

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

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

引入Solidity

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

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

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

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

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

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

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

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

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

制作MediumToken

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

讓我們來看一個例子:

  1. pragma solidity >=0.4.22 <0.6.0; 

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

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

接下來,我們需要實際聲明合同。

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

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

智能合約需要具有構(gòu)造函數(shù),當(dāng)我們的代碼部署到區(qū)塊鏈時,該功能將運(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;   } 

此時您鑄造了420個MediumToken,該數(shù)字是您想要的任何數(shù)字。構(gòu)造函數(shù)運(yùn)行后,我們需要創(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; 

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

接下來,我們需要編寫一個函數(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形式的金額,它還可以接受收件人的地址,而且此功能將是公開的,因此任何人都可以看到它。

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

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

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

如上述操作,我們創(chuàng)建了420個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é)任編輯:武曉燕 來源: 區(qū)塊鏈研究實驗室
相關(guān)推薦

2018-06-25 09:32:44

2022-11-01 08:46:20

責(zé)任鏈模式對象

2018-11-29 09:13:47

CPU中斷控制器

2016-08-03 13:36:01

2020-08-12 08:34:16

開發(fā)安全We

2020-11-06 07:10:21

5G定位

2019-03-20 14:29:46

Linux虛擬內(nèi)存

2018-04-04 14:43:27

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

2021-06-30 07:19:35

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

2022-07-28 10:39:31

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

2023-07-06 13:56:14

微軟Skype

2020-09-08 06:54:29

Java Gradle語言

2023-09-22 17:36:37

2020-05-22 08:16:07

PONGPONXG-PON

2021-01-28 22:31:33

分組密碼算法

2024-03-08 09:51:12

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

2021-08-01 09:55:57

Netty時間輪中間件

2024-10-28 21:02:36

消息框應(yīng)用程序

2023-09-27 16:39:38

2022-02-09 16:23:07

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

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