以太坊 Solidity學習

2021-08-28 08:34:13 字數 905 閱讀 9138

函式setget可以用來變更或取出變數的值。

該合約能完成的事情並不多(由於以太坊構建的基礎架構的原因):它能允許任何人在合約中儲存乙個單獨的數字,並且這個數字可以被世界上任何人訪問,且沒有可行的辦法阻止你發布這個數字。當然,任何人都可以再次呼叫 set ,傳入不同的值,覆蓋你的數字,但是這個數字仍會被儲存在區塊鏈的歷史記錄中。施加訪問限制,以確保只有本人才能改變這個數字。

address型別是乙個160位的值,且不允許任何算數操作。這種型別適合儲存合約位址或外部人員的金鑰對。

外部賬戶的位址是由公鑰決定的,而合約賬戶的位址是在建立該合約時確定的(這個位址通過合約建立者的位址和從該位址發出過的交易數量計算得到的,也就是所謂的「nonce」

無論帳戶是否儲存**,這兩類賬戶對evm來說是一樣的。

每個賬戶都有乙個鍵值對形式的持久化儲存。其中 key 和 value 的長度都是256位,我們稱之為 儲存 。

此外,每個賬戶有乙個以太幣餘額( balance )(單位是「wei」),餘額會因為傳送包含以太幣的交易而改變。

一經建立,每筆交易都收取一定數量的 gas ,目的是限制執行交易所需要的工作量和為交易支付手續費。evm 執行交易時,gas 將按特定規則逐漸耗盡。

gas price 是交易傳送者設定的乙個值,傳送者賬戶需要預付的手續費= gas_price * gas 。如果交易執行後還有剩餘, gas 會原路返還。

無論執行到什麼位置,一旦 gas 被耗盡(比如降為負值),將會觸發乙個 out-of-gas 異常。當前呼叫幀(call frame)所做的所有狀態修改都將被回滾

譯者注:呼叫幀(call frame),指的是evm的執行棧(stack)中當前操作所需要的若干元素。

以太坊solidity例項學習

判斷是否是管理員,然後儲存被投資者資訊 投資者能對被投資者任意投資 判斷是否是管理員,然後儲存被投資者資訊 投資者能對被投資者任意投資 pragma solidity 0.4.5 contract pcl struct beitouzizhe address beitouzizhe all beit...

以太坊solidity開發環境部署

基於ubuntu 16.04 sudo apt get install y nodejs sudo apt get install npm npm更換 源 sudo npm config set registry 更新nodejs到最新 sudo npm install g n sudo n sta...

以太坊solidity智慧型合約設計模式

設計模式是許多開發場景中的首選解決方案,本文將介紹五種經典的智慧型合約設計模式並給出 以太坊solidity實現 自毀合約 工廠合約 名稱登錄檔 對映表迭代器和提款模式。合約自毀模式用於終止乙個合約,這意味著將從區塊鏈上永久刪除這個合約。一旦被銷毀,就不可能呼叫合約的功能,也不會在賬本中記錄交易。現...