基於以太坊的Dapp開發學習心得二
阿新 • • 發佈:2019-02-11
Truffle框架
- Truffle框架安裝:npm install -g truffle
- 使用truffle –version 看是否安裝成功
- 新建目錄後,可以使用truffle init來建立專案
- 使用truffle develop 進入本地搭建好的私有區塊鏈,有建立好的10個預設的賬戶
- 使用web3.eth.account[1]來檢視第二個賬戶
- 使用web3.eth.getBalance(“賬號地址”) 檢視賬戶餘額
- 轉賬的數量:account = web3.toWei(30,’ether’);將30個以太幣轉成位,10的18次方 位 =1以太幣
使用轉賬交易
Web3.eth.sendTransaction
進入truffle develop之後,可以使用compile進行合約的編譯
合約部署:
var helloWorld 定義變數 合約名.deployed().then((instance)=>{helloWorld = instance}) migrate; var contract; SimpleStorage.deployed().then((i)=>{contract=i;});
合約的呼叫 helloWorld.test()進行合約的呼叫
- 修改合約內容後,重新編譯部署的方法:rm -rf build/ 將編譯的內容清空
- 進行專案開發時,可以新建一個資料夾,使用truffle unbox react來建立專案,整合前端的程式碼
- 使用npm run start命令來執行專案
Solidity智慧合約程式語言
- 變數的型別有很多,暫時接觸到的:uint,bool,address,byte,string,day,結構體
- 結構體struct 類似於java中的類
主要的就是function, 函式名,引數,許可權程度,返回值等
function winningProposal() public constant returns (uint8 _winningProposal) { uint256 winningVoteCount = 0
三個關鍵字 constant,pure,view
Constant 關鍵字:指如果函式返回值是類變數,就用constant pure關鍵字:如果函式返回值是字串或數值與類變數無關,就用pure view關鍵字:如果既沒有類變數又不包含字串等,就用view
mapping類似於java中的hashmap,放在合約中,可以用來儲存資料
mapping(address => Voter) voters; address是錢包地址 Voter是一個結構體
如果函式中使用了結構體,則這個函式一定只能是internal,不能使public,即無法在外部訪問
型別直接轉換比較困難,下面程式碼是uint轉string的
function uintToString(uint v) pure public returns (string) { uint maxlength = 100; bytes memory reversed = new bytes(maxlength); uint i = 0; while (v != 0) { uint remainder = v % 10; v = v / 10; reversed[i] = byte(48 + remainder); i++; } bytes memory s = new bytes(i); for (uint j = 0; j < i; j++) { s[j] = reversed[i-j-1]; } return string(s); }