以太坊理解
1.錢包,錢包是一個程序,主要原理是使用rpc遠程調用,和以太坊上的某個節點進行交互,也就是和以太坊進行交互,同時錢包重要的功能還有對以太坊賬戶的管理。
2.以太坊只有黃皮書,里面定義了以太坊的協議,以太坊的客戶端只要按照以太坊協議來實現,比如開放固定的端口等,就視為一個以太坊節點。比較知名的客戶端有geth,默認被視為”官方客戶端“,使用go開發。可以用它來搭建本地私鏈,不過本地私鏈只有一個節點,我感覺意義不是很大,作為合約的測試環境還可以。
3.以太坊有很多鏈,我們常說的以太坊是以太坊主鏈,鏈id為1,比較有名的還有測試鏈,跟以太坊主鏈差不多,也是全球通行,有一些默默無聞的大佬在貢獻它們的計算來維持測試鏈的挖礦、運行。以太坊根據鏈id來區分不同的鏈。
4.以太坊進行交易,主要填的有地址、value、data.。地址代表跟誰交易,value就是要轉的幣的數量,一般的交易只需要填寫地址和value,代表向誰轉多少幣。還有要填的就是gas,gas需要填寫gas的數量和單價兩個數據,數量有個最低值,是固定的,也可以往高了填。如果單價過低,礦工可能不會給你的交易上鏈,導致你的交易很久才能上鏈甚至上鏈失敗。
5,智能合約的創建,一般data是創建智能合約用的,如果普通交易填了data需要的燃油費會更多。創建智能合約的方式是向全0地址轉賬,智能合約也有存款,轉賬的時候填的value就是它初始的存款,當然value這一項也可以不填。data是智能合約編譯后的字節碼,字節碼可以通過工具來進行反編譯得到源碼。因此可以說智能合約是開源的。創建智能合約也就是向全0地址轉賬成功后,會返回一個地址,這個地址就是合約賬號。和普通賬號的區別在于有data這個值。其它都一樣。
6.調用智能合約,調用智能合約就是向合約地址轉賬,和普通轉賬的區別是還需要指定調用合約的某個方法和填寫方法的參數,合約的調用方法和參數調用也寫在data中。
7.智能合約可以有個構造函數,發布智能合約的時候給這個合約構造函數的參數,之后就不能再改變,比如發布自己的幣,可以在構造函數指定幣的總數。
8.web3.js是一個連接到某個節點的工具,在創建的時候指定ip地址和端口。就可以通過web3.js調用以太坊的相關功能,比如查詢連接到的那個節點的版本,查看區塊高度、轉賬,查詢余額,創造賬戶、合約、發送交易,等等,因此可以使用web3.js來開發錢包、dapp等。
9.私鏈在創建的時候記得開rpc遠程調用接口,這樣通過web3.js這個工具包才可以連接上本地的節點。
10.調用geth的newAcount()方法,相當于創建了一個賬戶,存放在本地節點的某個目錄下,這個目錄下的賬戶作為當前節點持有的賬戶。調用getAccounts()方法是查看本地節點的所有賬戶。
總結
- 上一篇: SpringBoot使用mybatis
- 下一篇: 数据泄露和DID