2018以太坊開(kāi)發(fā)隨記

區(qū)塊鏈課件

1. 以太坊:一個(gè)可以為不同區(qū)塊鏈提供服務(wù)的平臺(tái),開(kāi)發(fā)人員可以再該平臺(tái)上編寫(xiě)代碼,編寫(xiě)屬于自己區(qū)塊鏈的合約,創(chuàng)建自己的交易規(guī)則和狀態(tài)轉(zhuǎn)移函數(shù)

2. 以太坊虛擬機(jī):以太坊的核心,包含點(diǎn)對(duì)點(diǎn)的網(wǎng)絡(luò)協(xié)議,各個(gè)節(jié)點(diǎn)的維護(hù)和更新

3. 以太坊賬戶:以太坊的基本單位就是賬戶,每個(gè)賬戶由20個(gè)(哈希)字節(jié)組成,

區(qū)塊鏈上發(fā)生變化其實(shí)就是比特幣(或者其他幣)的交易和狀態(tài)的改變。

以太坊有兩種賬號(hào):外部賬號(hào)和合約賬號(hào),

外部賬號(hào)(EOA)是個(gè)人的賬號(hào),由每個(gè)人的私鑰控制的,

對(duì)于合約賬號(hào),是由合約代碼控制的,其只能由一個(gè)EOA賬號(hào)控制。

合約賬號(hào)不會(huì)做出什么行為,全都靠著外部賬號(hào)發(fā)指令。

一個(gè)以太網(wǎng)賬號(hào)包含四個(gè)字段:

1.隨機(jī)數(shù),確保每個(gè)交易只被處理一次

2.賬戶余額

3.合約代碼

4.這個(gè)賬戶的存儲(chǔ)

4. 交易:在以太坊中是簽名的數(shù)據(jù)包,包括

1.消息的接收方

2.可識(shí)別發(fā)送方的簽名

3.發(fā)送方給接收方的以特幣數(shù)量

4.可選參數(shù)

5.一個(gè)STARTGAS,交易允許的最大交易步驟(防止惡意交易,畢竟是有成本的)

6.GASPRICE,計(jì)算所耗費(fèi)的費(fèi)用

5. 以太坊狀態(tài)轉(zhuǎn)移函數(shù)(真的沒(méi)看懂)

6. 多重簽名:至少兩個(gè)賬號(hào) 至少1.02個(gè)以太幣

7. 以太坊網(wǎng)絡(luò)type:

1.公有鏈:任何用戶,任何市場(chǎng),數(shù)據(jù)一致性

2.私有鏈:公司內(nèi)部,寫(xiě)權(quán)限由一個(gè)組織控制,讀權(quán)限隨意

3.聯(lián)盟鏈:數(shù)據(jù)一致性的運(yùn)算被預(yù)先設(shè)定好的幾個(gè)節(jié)點(diǎn)共同控制的鏈。這樣每一次的操作都需要聯(lián)盟的各個(gè)成員驗(yàn)證才能通過(guò)

對(duì)于開(kāi)發(fā)者而言,大多數(shù)使用的是私有鏈或者聯(lián)盟鏈

區(qū)塊鏈第三節(jié)

第三節(jié)要求可以在私鏈上挖礦

8. 以太坊加快下載速度的op:geth --testnet --fast --cache=1024 --jitvm console

9. 區(qū)塊鏈一個(gè)區(qū)塊的信息

CustomGenesis.json

{

? ? "nonce": "0x0000000000000042",? ?

? ? "timestamp": "0x0",

? ? "parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",

? ? "extraData": "0x0",? ?

? ? "gasLimit": "0x8000000",? ?

? ? "difficulty": "0x400",

? ? "mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",

? ? "coinbase": "0x3333333333333333333333333333333333333333",? ?

? ? "alloc": {? ? }

}

解釋:

nonce + mixhash : 被稱作工作證明,其中mixhash是256位的哈希值,nonce是64位的哈希值。(至于為什么稱為工作證明,可能是符合某個(gè)數(shù)學(xué)條件吧)

timestamp:unix的時(shí)間戳

parenthash:顧名思義

extraData:交易過(guò)后留下的自己的基本信息比如名字什么的

gaslimit:當(dāng)前鏈,一個(gè)區(qū)塊消耗的gas上限

difficulty:定義挖礦的目標(biāo),可以由上一區(qū)塊的難度值和時(shí)間戳計(jì)算出來(lái)(計(jì)算方位暫時(shí)不詳),難度越高,越難挖到礦

alloc:預(yù)先放進(jìn)去一些錢(qián)啊

coinbase:160位的錢(qián)包地址。在創(chuàng)世區(qū)塊中可以被定義成任何的地址,因?yàn)楫?dāng)每挖到一個(gè)區(qū)塊的時(shí)候,這個(gè)值會(huì)變成礦工的etherbase地址

第四節(jié)

0731筆記:

請(qǐng)構(gòu)建一個(gè)多節(jié)點(diǎn)的(至少2個(gè)節(jié)點(diǎn))私有鏈網(wǎng)絡(luò),并在上面練習(xí)多重簽名錢(qián)包或者子貨幣合約

1. solidity智能合約教程:一個(gè)合約由一組代碼(合約的函數(shù))和數(shù)據(jù)(合約的狀態(tài))

2. 關(guān)于solidity的基礎(chǔ)知識(shí):

1. 狀態(tài)變量是被永久地保存在合約中。也就是說(shuō)它們被寫(xiě)入以太幣區(qū)塊鏈中. 想象成寫(xiě)入一個(gè)數(shù)據(jù)庫(kù)。

2. solidity支持結(jié)構(gòu)體

3. solidity支持?jǐn)?shù)組

4. 狀態(tài)變量被永久保存在區(qū)塊鏈中。所以在你的合約中創(chuàng)建動(dòng)態(tài)數(shù)組來(lái)保存成結(jié)構(gòu)的數(shù)據(jù)是非常有意義的。

5. 結(jié)構(gòu)體數(shù)組:“結(jié)構(gòu)體名字[] public 數(shù)組名字”

6. 習(xí)慣上函數(shù)里的變量都是以(_)開(kāi)頭 (但不是硬性規(guī)定) 以區(qū)別全局變量。我們整個(gè)教程都會(huì)沿用這個(gè)習(xí)慣。

7. 私有函數(shù)的函數(shù)名以_開(kāi)頭

8. 函數(shù)的定義中包含返回的數(shù)據(jù)類型

9. 函數(shù)的修飾符:

view:把函數(shù)定義為 view, 意味著它只能讀取數(shù)據(jù)不能更改數(shù)據(jù):

pure:pure 函數(shù), 表明這個(gè)函數(shù)甚至都不訪問(wèn)應(yīng)用里的數(shù)據(jù)

10. 注意返回不是return 而是returns 是在定義函數(shù)的時(shí)候

11. 事件 是合約和區(qū)塊鏈通訊的一種機(jī)制。你的前端應(yīng)用“監(jiān)聽(tīng)”某些事件,并做出反應(yīng)

12. 地址屬于特定用戶(或智能合約)的

13. 結(jié)構(gòu)體,數(shù)組和映射都是存儲(chǔ)數(shù)據(jù)的方法

14. 在 Solidity 中,有一些全局變量可以被所有函數(shù)調(diào)用。 其中一個(gè)就是 msg.sender,它指的是當(dāng)前調(diào)用者(或智能合約)的 address。

15. 我們?cè)鯓硬拍芟薅總€(gè)玩家只調(diào)用一次這個(gè)函數(shù)呢?答案是使用require。 require使得函數(shù)在執(zhí)行過(guò)程中,當(dāng)不滿足某些條件時(shí)拋出錯(cuò)誤,并停止執(zhí)行

16. 除 public 和 private 屬性之外,Solidity 還使用了另外兩個(gè)描述函數(shù)可見(jiàn)性的修飾詞:internal(內(nèi)部) 和 external(外部)。

internal 和 private 類似,不過(guò), 如果某個(gè)合約繼承自其父合約,這個(gè)合約即可以訪問(wèn)父合約中定義的“內(nèi)部”函數(shù)。(嘿,這聽(tīng)起來(lái)正是我們想要的那樣!)。

external 與public 類似,只不過(guò)這些函數(shù)只能在合約之外調(diào)用 - 它們不能被合約內(nèi)的其他函數(shù)調(diào)用。稍后我們將討論什么時(shí)候使用 external 和 public。

0801筆記

17. solidity可以返回多個(gè)值,很神奇吧,接收返回值的時(shí)候可以醬紫(,,name,,,,id),選擇性接收參數(shù)

截止到目前為止,第一二課就學(xué)習(xí)完了

//lesson3

18. 函數(shù)修飾符: 關(guān)鍵字modifier類似于function一樣,聲明一個(gè)新的東西,不同的是告訴編輯器這是一個(gè)修飾符,只能用在聲明函數(shù)的后面,經(jīng)常用在函數(shù)之前添加加速的require檢查,onlyOwner保護(hù)自己的合約不被第三方修改。

函數(shù)修飾符可以帶自己相帶的參數(shù)

19. ☆☆☆☆☆☆☆☆所以非常重要的是,部署在以太坊上的 DApp,并不能保證它真正做到去中心,你需要閱讀并理解它的源代碼,才能防止其中沒(méi)有被部署者惡意植入后門(mén);作為開(kāi)發(fā)人員,如何做到既要給自己留下修復(fù) bug 的余地,又要盡量地放權(quán)給使用者,以便讓他們放心你,從而愿意把數(shù)據(jù)放在你的 DApp 中,這確實(shí)需要個(gè)微妙的平衡。

20. gas? 運(yùn)行程序都需要花費(fèi)一定的gas,gas是需要用以太幣購(gòu)買(mǎi)的,所有每次用戶運(yùn)行DApp(去中心化的應(yīng)用)都需要以特幣

21.? 代碼的優(yōu)化,越笨拙的代碼需要的話費(fèi)越多

22. solidity代碼的優(yōu)化:當(dāng) uint 定義在一個(gè) struct 中的時(shí)候,盡量使用最小的整數(shù)子類型以節(jié)約空間。 并且把同樣類型的變量放一起(即在 struct 中將把變量按照類型依次放置),這樣 Solidity 可以將存儲(chǔ)空間最小化

23。solidity自己的時(shí)間單位 now返回當(dāng)前的unix的時(shí)間戳,這個(gè)時(shí)間戳用32位就足夠,但是到了2038年,32位就不能在滿足時(shí)間戳的長(zhǎng)度了,所以這是一個(gè)需要兩難全的問(wèn)題mn?

24. 結(jié)構(gòu)體的存儲(chǔ)指針可以以參數(shù)的方式傳遞給一個(gè) private 或 internal 的函數(shù),因此結(jié)構(gòu)體可以在多個(gè)函數(shù)之間相互傳遞。

25. view函數(shù)不需要支付gas? 666啊

//lesson4 學(xué)習(xí)payable函數(shù),學(xué)習(xí)如何開(kāi)發(fā)可以接收其他玩家付款的DApp。

26. 關(guān)于函數(shù)修飾符:

private:只能被合約內(nèi)部調(diào)用

internal:像private一樣,但同時(shí)能被繼承的合約調(diào)用

external:只能從合約外部調(diào)用

public:合約的任何地方都可以調(diào)用

關(guān)于狀態(tài)修飾符:

view:告訴我們這個(gè)函數(shù)不會(huì)更改和保存任何數(shù)據(jù)

pure:告訴我們這個(gè)函數(shù)不僅不會(huì)寫(xiě)往區(qū)塊鏈數(shù)據(jù),他甚至不從區(qū)塊鏈讀取數(shù)據(jù)

注意:外部調(diào)用不耗費(fèi)gas,內(nèi)部調(diào)用耗費(fèi)gas

自定義的函數(shù)修飾符,關(guān)鍵詞modifier ☆☆☆☆☆☆☆☆切記modifier定義的最后一行是"_;"

一個(gè)函數(shù)可以有多個(gè)自定義修飾符

27. 新的修飾符payable:可以接收以太的函數(shù)

//0802 lesson5

代幣, ERC721 標(biāo)準(zhǔn),以及可交易的物件/僵尸

? ? 庫(kù)以及如何使用庫(kù)

? ? 如何利用 SafeMath 來(lái)防止溢出和下溢

? ? 代碼注釋和 natspec 標(biāo)準(zhǔn)

? 28. 在智能合約中通常有一個(gè)映射mapping(address=>uint),即通過(guò)地址查詢改地址還有多少錢(qián)

? 29. solidity可以實(shí)現(xiàn)多繼承? C++,java也可以實(shí)現(xiàn)多繼承, 但是PHP只有單繼承

? 30. function balanceOf(address _owner) public view returns (uint256 _balance);? 傳入地址,返回改地址有多少代幣

? 31. function ownerOf(uint256 _tokenId) public view returns (address _owner);傳入代幣的ID,返回其擁有者的address

? 32. 代幣的交易有兩種方法

? ? 1. function transfer(address _to, uint256 _tokenId) public; 這種是coin的發(fā)送方把接受者的地址和發(fā)送coin的id傳進(jìn)函數(shù)直接發(fā)送

? ? 2. function approve(address _to, uint256 _tokenId) public;? 同上,coin的owner調(diào)用approve,把receiver的信息和coin的id傳入函數(shù)

? ? ? function takeOwnership(uint256 _tokenId) public;接著,該合約會(huì)存儲(chǔ)誰(shuí)被允許提取代幣,通常存儲(chǔ)到一個(gè) mapping (uint256 => address) 里。然后,當(dāng)有人調(diào)用 takeOwnership 時(shí),合約會(huì)檢查 msg.sender 是否得到擁有者的批準(zhǔn)來(lái)提取代幣,如果是,則將代幣轉(zhuǎn)移給他。

? 33. 合約的安全性:溢出和下溢

? 34. library 關(guān)鍵字 — 庫(kù)和 合約很相似,但是又有一些不同。 就我們的目的而言,庫(kù)允許我們使用 using 關(guān)鍵字,它可以自動(dòng)把庫(kù)的所有方法添加給一個(gè)數(shù)據(jù)類型

? //lesson6

? 35. 用 Infura 作為節(jié)點(diǎn)提供者,你可以不用自己運(yùn)營(yíng)節(jié)點(diǎn)就能很可靠地向以太坊發(fā)送、接收信息。

? ? var web3 = new Web3(new Web3.providers.WebsocketProvider("wss://mainnet.infura.io/ws"));

? 36. Metamask 是 Chrome 和 Firefox 的瀏覽器擴(kuò)展, 它能讓用戶安全地維護(hù)他們的以太坊賬戶和私鑰, 并用他們的賬戶和使用 Web3.js 的網(wǎng)站互動(dòng)

? 37. 與合約對(duì)話:需要合約地址和它的ABI ---應(yīng)用二進(jìn)制接口(Application Binary Interface)); Web3.js 為了要和你的智能合約對(duì)話而需要的東西是 ABI

? 38. Web3.js 有兩個(gè)方法來(lái)調(diào)用我們合約的函數(shù): call and send.

? ? ? 1. call 用來(lái)調(diào)用 view 和 pure 函數(shù)。它只運(yùn)行在本地節(jié)點(diǎn),不會(huì)在區(qū)塊鏈上創(chuàng)建事務(wù)。

? ? ? 2. send 將創(chuàng)建一個(gè)事務(wù)并改變區(qū)塊鏈上的數(shù)據(jù)。你需要用 send 來(lái)調(diào)用任何非 view 或者 pure 的函數(shù)

? ? ? ? receipt 將在合約被包含進(jìn)以太坊區(qū)塊上以后被觸發(fā),這意味著僵尸被創(chuàng)建并保存進(jìn)我們的合約了。

? ? ? ? error將在事務(wù)未被成功包含進(jìn)區(qū)塊后觸發(fā),比如用戶未支付足夠的gas。我們需要在界面中通知用戶事務(wù)失敗以便他們可以再次嘗試。

? 39. 我們可以通過(guò)這樣來(lái)獲取 web3 變量中激活的當(dāng)前賬戶:var userAccount = web3.eth.accounts[0];

? 40. 一個(gè) wei 是以太的最小單位 — 1 ether 等于 10^18 wei 太多0要數(shù)了,不過(guò)幸運(yùn)的是 Web3.js 有一個(gè)轉(zhuǎn)換工具來(lái)幫我們做這件事:// 把 1 ETH 轉(zhuǎn)換成 Wei web3js.utils.toWei("1", "ether");

? 41. 為了篩選僅和當(dāng)前用戶相關(guān)的事件,我們的 Solidity 合約將必須使用 indexed 關(guān)鍵字,

? 42. 使用 event 和 indexed 字段對(duì)于監(jiān)聽(tīng)合約中的更改并將其反映到 DApp 的前端界面中是非常有用的做法。

? 43. 查詢過(guò)去的事件? cryptoZombies.getPastEvents("NewZombie", { fromBlock: 0, toBlock: 'latest' })? 用過(guò)濾器 fromBlock 和 toBlock 給 Solidity 一個(gè)事件日志的時(shí)間范圍

? 44? var web3Infura = new Web3(new Web3.providers.WebsocketProvider("wss://mainnet.infura.io/ws"));

? ? ? var czEvents = new web3Infura.eth.Contract(cryptoZombiesABI, cryptoZombiesAddress);

? 45? 對(duì)于訂閱事件還是不太理解,是在html中觸發(fā)了某個(gè)event然后根據(jù)返回的結(jié)果再處理自己接下來(lái)的記錄



~~~~~~~~~~~~~~~~~~~PHP以太坊開(kāi)發(fā)~~~~~~~~~~~~~~~~~~~~~~~

1. 以太坊是第一個(gè)實(shí)現(xiàn)了虛擬機(jī)的區(qū)塊鏈,因此為智能合約 - Smart Contract的運(yùn)行提供了良好的支持環(huán)境。也正因?yàn)檫@個(gè)原因,以太坊被稱為區(qū)塊鏈2.0,以區(qū)別于比特幣代表的以數(shù)字加密貨幣為核心特征的區(qū)塊鏈1.0。

2. 以太坊作為一個(gè)去中心化的系統(tǒng),必然不會(huì)采用中心化的賬戶管理方案沒(méi)有一個(gè)中心數(shù)據(jù)庫(kù)來(lái)保存以太坊平臺(tái)上的所有賬戶信息。 事實(shí)上,以太坊使用非對(duì)稱密鑰技術(shù)來(lái)進(jìn)行身份識(shí)別,一個(gè)以太坊 賬戶對(duì)應(yīng)著一對(duì)密鑰:

3.以太坊使用非對(duì)稱密鑰對(duì)來(lái)進(jìn)行身份識(shí)別,每一個(gè)賬戶都有對(duì)應(yīng)的私鑰和公鑰,私鑰用來(lái)簽名、公鑰則用來(lái)驗(yàn)證簽名 —— 從而 在非可信的去中心化環(huán)境中實(shí)現(xiàn)身份驗(yàn)證。

4. 從私鑰可以得到公鑰,然后進(jìn)一步得到賬戶地址,而反之則無(wú)效。

5. keystore允許你用加密的方式存儲(chǔ)密鑰。這是安全性(一個(gè)攻擊者需要keystore文件和你的錢(qián)包口令才能盜取你的資金)和可用性(你只需要keystore 文件和錢(qián)包口令就能用你的錢(qián)了)兩者之間完美的權(quán)衡。

6. 采用對(duì)稱加密算法,當(dāng)我們需要從keystore中恢復(fù)私鑰時(shí),只需要使用生成該錢(qián)包的密碼,并結(jié)合keystore文件中的算法參數(shù)

7. 口令是不是token的值呢?賬戶憑證是不是密碼?

8. 狀態(tài)與交易:以太坊上狀態(tài)的改變和數(shù)值的改變

? ? 在以太坊中,外部應(yīng)用可以向節(jié)點(diǎn)提交兩種交易:普通交易和裸交易。 普通交易由節(jié)點(diǎn)簽名,而裸交易則由外部應(yīng)用負(fù)責(zé)簽名。相應(yīng)的,這兩種 交易需要調(diào)用不同的接口進(jìn)行提交。

? ? 由于共識(shí)機(jī)制,向節(jié)點(diǎn)提交的交易不會(huì)立刻生效,最理想的情況下是被 礦工置入下一個(gè)新塊。因此交易提交后還需要耐心等待交易收據(jù)。

9. 交易類型:普通交易? 裸交易

? ? 通交易由節(jié)點(diǎn)負(fù)責(zé)簽名,然后發(fā)送到網(wǎng)絡(luò)中進(jìn)行確認(rèn);

? ? 而裸交易則由外部應(yīng)用進(jìn)行簽名,節(jié)點(diǎn)不再額外處理,而只是負(fù)責(zé)發(fā)送到網(wǎng)絡(luò)中進(jìn)行確認(rèn) —— 這也是裸交易名稱的由來(lái) —— 未經(jīng)節(jié)點(diǎn)加工的原始交易

10. 交易后產(chǎn)生的類似于發(fā)票的東西

? ? (

? ? [transactionHash] => 0x5d3ab736571a92ff6cbd6e461d4c894053c066f6ec0ee8ef20f1d28abcdcafc4

? ? [transactionIndex] => 0x0

? ? [blockHash] => 0x2f01de00ccbd63cf7ca0caba7e7df55e3d216858dcb40e14523a94135d3d0cbb

? ? [blockNumber] => 0x10

? ? [gasUsed] => 0x5208

? ? [cumulativeGasUsed] => 0x5208

? ? [contractAddress] =>

? ? [logs] => Array

? ? ? ? (

? ? ? ? )

? ? [status] => 0x1

? ? [logsBloom] => 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

)

? ? transactionHash: DATA, 32字節(jié) - 交易哈希

? ? transactionIndex: QUANTITY - 交易在塊內(nèi)的索引序號(hào)

? ? blockHash: DATA, 32字節(jié) - 交易所在塊的哈希

? ? blockNumber: QUANTITY - 交易所在塊的編號(hào)

? ? from: DATA, 20字節(jié) - 交易發(fā)送方地址

? ? to: DATA, 20字節(jié) - 交易接收方地址,對(duì)于合約創(chuàng)建交易該值為null

? ? cumulativeGasUsed: QUANTITY - 交易所在塊消耗的gas總量

? ? gasUsed: QUANTITY - 該次交易消耗的gas用量

? ? contractAddress: DATA, 20字節(jié) - 對(duì)于合約創(chuàng)建交易,該值為新創(chuàng)建的合約地址,否則為null

? ? logs: Array - 本次交易生成的日志對(duì)象數(shù)組

? ? logsBloom: DATA, 256字節(jié) - bloom過(guò)濾器,輕客戶端用來(lái)快速提取相關(guān)日志

? ? 返回的結(jié)果對(duì)象中還包括下面二者之一 :

? ? root : DATA 32字節(jié),后交易狀態(tài)根(pre Byzantium)

? ? status: QUANTITY ,1 (成功) 或 0 (失敗)

11. Gas是指一個(gè)transaction 在EVM中執(zhí)行的步數(shù),類似于數(shù)據(jù)結(jié)構(gòu)中的復(fù)雜度O();

? ? gas price計(jì)算公式:

? ? 交易手續(xù)費(fèi)(Tx Fee) = 實(shí)際運(yùn)行步數(shù)(Actual Gas Used) * 單步價(jià)格(Gas Price)

? ? Gas Limit就是一次交易中Gas的可用上限,也就是你的交易中最多會(huì)執(zhí)行多少步運(yùn)算。 由于交易復(fù)雜程度各有不同, 確切的Gas消耗量是在完成交易后才會(huì)知道,因此在你提交交易 之前,需要為交易設(shè)定一個(gè)Gas用量的上限。

? ? 一個(gè)交易可能被收取的最高服務(wù)費(fèi)就是Gas Limit * Gas?? Price 了

? ? geth的一些命令:

? ? geth --rpc? --rpcapi net,eth,web3,personal,miner? --datadir ./data --networkid 7878 --port 30304? console

? ? 更改

? ? geth --rpc? --rpcapi net,eth,web3,personal --rpcport 30306 --port 8547? --datadir ./data1 --networkid 7878 console

? ? geth --identity "pfx1" --ipcdisable --nodiscover --port 30301 --rpccorsdomain "*" --datadir "chain" --networkid 998? console //在windows下開(kāi)啟

? ? geth --dev console? //啟動(dòng)帶有好多wei的賬戶

? ? eth.accounts('12312313') //創(chuàng)建賬戶

? ? eth.getbalance(eth.accounts[1]) //查看賬戶有多少錢(qián)

? ? personal.unlockAccount(eth.accounts[1])//解鎖一下賬戶

? ? eth.sendTransaction({from: eth.accounts[1], to: eth.accounts[0], value: web3.toWei(100,'ether')})

? ? miner.setEtherbase("0xc65e36d4ec02d4c8a6ca4b33f07dc55b8b800e73") //設(shè)置默認(rèn)挖礦賬戶

? ? eth.coinbase()//查看默認(rèn)賬戶

? ? admin.nodeInfo.enode //查看節(jié)點(diǎn)信息

? ? http://shenzhen.weisanyun.cn/blockchain/public/index.php/admin/common/login.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容