1. 程式人生 > >solidity智慧合約如何判斷地址為0或空

solidity智慧合約如何判斷地址為0或空

智慧合約地址判斷

在舊版本中可使用以下程式碼來進行比較:

owner != 0x0

但如果在新版本中使用,則會提示錯誤資訊。

那麼,如何正確使用來比較地址是否為空呢。

解決方案

可以使用address(0)或address(0x0)來替代。因此可以如下寫法:

owner != address(0);
// 或

owner != address(0x0);

當然,在使用操作符的時候也建議使用:

==
// 或
!=

來替代

>

原文連結 :https://www.choupangxia.com/2019/07/16/solidity%e6%99%ba%e8%83%bd%e5%90%88%e7%ba%a6%e5%a6%82%e4%bd%95%e5%88%a4%e6%96%ad%e5%9c%b0%e5%9d%80%e4%b8%ba0%e6%88%96%e7%a9%ba/

相關推薦

solidity智慧合約如何判斷地址0

智慧合約地址判斷 在舊版本中可使用以下程式碼來進行比較: owner != 0x0 但如果在新版本中使用,則會提示錯誤資訊。 那麼,如何正確使用來比較地址是否為空呢。 解決方案 可以使用address(0)或address(0x0)來替代。因此可以如下寫法: owner != address(0); // 或

solidity智慧合約[22]-地址

地址 solidity語言中有賬戶的概念,solidity語言中有兩類賬戶。一類是合約賬戶、一類是外部賬戶。賬戶都有地址。地址為160位。 定義地址 address public account1 = 0x4B0897b0513fdC7C541B6d9D7E929C4e5364D2dB;addres

solidity智慧合約如何判斷mapping值

mapping值的判斷問題 在Java這類程式語言中,我們可以獲得Map裡面的值然後與null或空來進行判斷該key對應的值是否為

solidity智慧合約[14]-動態位元組陣列轉換string

動態位元組陣列轉換為string 動態位元組陣列可以通過string(name)非常直接的轉換為string型別,下面為例子: 1234567891011121314 pragma solidity ^0.4.23;contract dynamicTostring{ &

如何判斷int、double、float型別資料0判斷一個未知資料型別的0相等

這個判斷適合很多語言, 首先要明白一點:對於數字而言,放在程式裡,整數佔用4或者8個位元組,小數則佔用8個位元組 字面量整數的型別是int,比如:10的資料型別是:int,所以:int a = 10 編譯器才不會報錯 字面量小數的型別是double和float(目測C語言對

Python 判斷是否質數素數

span mil 根據 inpu 自然數 執行 一個數 input round 一個大於1的自然數,除了1和它本身外,不能被其他自然數(質數)整除(2, 3, 5, 7等),換句話說就是該數除了1和它本身以外不再有其他的因數。 首先我們來第一個傳統的判斷思路: def ha

solidity智慧合約[10]-動態位元組陣列

動態位元組陣列的定義 bytes 變數名 = new bytes(大小); 動態位元組陣列的屬性 可以修改大小和長度 動態位元組陣列預設初始化為0 bytes public name = new bytes(2);name的值一開始為0x0000 動態位元組陣列的賦值

solidity智慧合約[9]-位元組陣列與運算

byte型別 有byte bytes1 bytes2 … bytes32特殊的有byte == bytes1 後面的數字代表佔了多少位元組。1個位元組在記憶體中佔了8位 性質 固定位元組陣列不能修改長度和內容 位元組一般用16進位制來儲存 16進制中的1個數字代表佔了4位。

solidity智慧合約[8]-位運算與字面量

位運算 solidity中,可以對於最底層的位進行操作。由於以太坊中需要消耗gas,因此,為了節約gas、所以對於位的操作會用到比較頻繁。solidity中支援多種型別的位運算操作1、位與 &2、位或 |3、位異或 ^4、位取反 ~5、<<6、>> 數字3、4的二進位制

solidity智慧合約[7]-整型與運算

整型變數 整數是現實中處理最多的單位,在solidity中的整數型別有int和uint,int型別可以儲存負數,uint型別只能夠儲存非負數。int型別:int8,int16,int24,int32…int256uint型別:uint8,uint16,uint24,uint32…uint256 後面的

solidity智慧合約[6]-基本型別與bool運算

變數 儲存資料的抽象單位,代表記憶體中的一段空間。 型別 同其他的程式語言一樣,solidity中也有許多基本的型別。型別決定了儲存空間的大小和解析的方式。下面列舉出了solidity中基本的型別int、uint、byte、string、bool 基本型別 bool型別 這一小節

solidity智慧合約[5]——一筆交易詳解

在之前,我們已經寫好了一個最簡單的helloworld合約,如下: 1234567891011121314151617 pragma solidity ^0.4.23;contract HelloWorld{    string public name

solidity智慧合約[4]-pure與view剖析

pure與view程式碼例子 如下的一段solidity智慧合約中,只要有了pure與view修飾符的函式,那麼呼叫函式就不會消耗gas。而沒有pure與view修飾的函式,如下面的change就會消耗gas。 12345678910111213141516171819

solidity智慧合約[19]-for迴圈

for for 語句為"當型"迴圈結構。for語句的語法為: 123 for ( 表示式 1; 表示式 2; 表示式){  語句} 說明:表示式 1為迴圈變數賦初始值。表示式 2為迴圈條件。表示式 3為迴圈變數增值。 for迴圈列印斐波拉

solidity智慧合約[18]-twoarray

二維陣列定義 1 uint[2][3] grade = [[60,80],[40,20],[50,50]]; 返回二維陣列 1234 function getGrade() view public returns(ui

solidity智慧合約[17]-動態長度陣列

動態長度陣列 動態長度陣列可以改變大小和長度 動態長度陣列的定義 uint[] grade=[1,2,3,4,5]; 返回動態長度陣列 123 function getArray() public view returns(uint[]){   &nbs

solidity智慧合約[16]-固定長度陣列

陣列 記憶體中的一片連續區域 定義 12 int[7] math;bytes2[3] bytesTest; 賦值 1 uint[5] public  grade =[1,2,3,4,5];

solidity智慧合約[15]-fixtostring

固定位元組陣列轉string 固定位元組陣列轉換為string沒有好的辦法,必須要首先將固定位元組陣列轉換為動態位元組陣列,再將動態位元組陣列轉換為string 123456789101112 //bytes2  ->  bytes  

Solidity 語言學習(2)—— Solidity智慧合約檔案結構

版本申明 pragma solidity ^0.4.0; 說明: 1 版本要高於0.4才可以編譯 2 表示高於0.5的版本則不可編譯,第三位的版本號但可以變,留出來用做bug可以修復(如 0.4.1的編譯器有bug,可在0.4.2 修復,現有合約不用該程式碼)。 引用其他

solidity智慧合約[29]-函式作用域

函式重名與函式作用域問題 1、當狀態變數中已經有了一個變數a、狀態變數中就不能夠再有一個同名的狀態變數。2、當狀態變數中和函式體內部已經有了都有一個同名的函式的時候,預設處理的是函式體內部的變數。也就是說,變數的操作和其他語言一樣,仍然滿足就近原則。 12345678910