Solidity知識點集———Address, Mapping, msg.sender, require, Inheritance
Address(地址)
以太坊區塊鏈由 account (賬戶)組成,你可以把它想象成銀行賬戶。一個帳戶的餘額是 以太幣 eth
每個帳戶都有一個“地址”,你可以把它想象成銀行賬號。這是賬戶唯一的識別符號。地址屬於特定使用者(或智慧合約)的。
對映(Mapping)
msg.sender
在 Solidity 中,有一些全域性變數可以被所有函式呼叫。 其中一個就是 msg.sender。它指的是當前呼叫者(或智慧合約)的 address。
注
意
:
在
S
o
l
i
d
i
t
y
中
,
功
能
執
行
始
終
需
要
從
外
部
調
用
者
開
始
。
一
個
合
約
只
會
在
區
塊
鏈
上
什
麼
也
不
做
,
除
非
有
人
調
用
其
中
的
函
數
。
所
以
m
s
g
.
s
e
n
d
e
r
總
是
存
在
的
注意:在 Solidity 中,功能執行始終需要從外部呼叫者開始。 一個合約只會在區塊鏈上什麼也不做,除非有人呼叫其中的函式。所以 msg.sender總是存在的
注意:在Solidity中,功能執行始終需要從外部調用者開始。一個合約只會在區塊鏈上什麼也不做,除非有人調用其中的函數。所以msg.sender總是存在的
mapping (address => uint) favoriteNumber;
function setMyNumber(uint _myNumber) public {
// 更新我們的 `favoriteNumber` 對映來將 `_myNumber`儲存在 `msg.sender`名下
favoriteNumber[msg.sender] = _myNumber;
// 儲存資料至對映的方法和將資料儲存在陣列相似
}
function whatIsMyNumber() public view returns (uint) {
// 拿到儲存在呼叫者地址名下的值
// 若呼叫者還沒呼叫 setMyNumber, 則值為 `0`
return favoriteNumber[msg.sender];
}
Require
require使得函式在執行過程中,當不滿足某些條件時丟擲錯誤,並停止執行。
function sayHiToVitalik(string _name) public returns (string) {
// 比較 _name 是否等於 "Vitalik". 如果不成立,丟擲異常並終止程式
// (敲黑板: Solidity 並不支援原生的字串比較, 我們只能通過比較
// 兩字串的 keccak256 雜湊值來進行判斷)
require(keccak256(_name) == keccak256("Vitalik"));
// 如果返回 true, 執行如下語句
return "Hi!";
}
繼承(Inheritance)
當程式碼過於冗長的時候,最好將程式碼和邏輯分拆到多個不同的合約中,以便於管理。合約繼承用is
關鍵字。
contract Doge {
function catchphrase() public returns (string) {
return "So Wow CryptoDoge";
}
}
contract BabyDoge is Doge {
function anotherCatchphrase() public returns (string) {
return "Such Moon BabyDoge";
}
}
相關文章
- vue知識點集錦Vue
- Android 知識點 集錦Android
- Flutter 面試知識點集錦Flutter面試
- MySQL 叢集知識點整理MySql
- 關於 Mybatis mapping.xml中的 StatementType 知識點MyBatisAPPXML
- 前端面試知識點錦集前端面試
- Solidity中的assert()、require()與revert()SolidUI
- javaScript基礎概念小知識點集JavaScript
- 知識集錦
- 遨翔在知識的海洋裡----(module exports require)ExportUI
- 知識點
- 前端知識集錦前端
- linux知識知識點總結Linux
- Promise知識點Promise
- 面試知識點面試
- Laravel 知識點Laravel
- 通用知識點
- 前端知識點前端
- ajax知識點
- rabbitmq 知識點MQ
- Redis知識點Redis
- SQL知識點(+)SQL
- JavaWeb知識點JavaWeb
- MySQL知識點MySql
- 知識點——terms
- Weex 知識點
- mybatis知識點MyBatis
- SASS知識點
- git 知識點Git
- KVO知識點
- iOS 知識點iOS
- Web知識點Web
- mongoDB知識點MongoDB
- qc知識點
- ASM知識點ASM
- 混合知識點
- JS知識點:ES6 中常見的知識點JS
- iOS知識 – 收藏集 – 掘金iOS