讀文章第二遍大致筆記, [以太坊源**分析] i.區塊和交易,合約和虛擬機器
tx 的轉帳轉出方位址確實沒有如轉入方一樣被顯式的宣告出來,而是被加密隱藏起來了,在ethereum裡這個轉出方位址是機密,不能直接暴露。這個對tx加密的環節,在ethereum裡被稱為簽名(sign
ethereum 裡用stateobject來表示乙個賬戶account,這個賬戶可轉帳(transfer value), 可執行tx, 它的唯一標示符是乙個address型別變數。 這個receipt.poststate 就是當時所在block裡所有stateobject物件的rlp hash值。
生成數字簽名的函式叫signtx(),它會先呼叫其他函式生成signature, 然後呼叫tx.withsignature()將signature分段賦值給tx的成員變數r,s,v。
恢復出轉出方位址的函式叫sender(), 引數包括乙個signer, 乙個transaction
evm 中定義的成員變數context和statedb, 僅僅宣告了變數名而無型別,而變數名同時又是其型別名,在golang中,這種方式意味著宗主結構體可以直接呼叫該成員變數的所有方法和成員變數,比如evm呼叫context中的transfer()。
statedb 並不是真正的資料庫,只是一行為類似資料庫的結構體。它在內部以trie的資料結構來管理各個基於位址的賬戶,可以理解成乙個cache;當該賬戶的資訊有變化時,變化先儲存在trie中。僅當整個block要被插入到blockchain時,statedb 裡快取的所有賬戶的所有改動,才會被真正的提交到底層資料庫。
stateobject 是ethereum裡用來管理乙個賬戶所有資訊修改的結構體,它以乙個address型別變數為唯一標示符。statedb 在內部用乙個巨大的map結構來管理這些stateobject物件。所有賬戶資訊-包括ether餘額,指令陣列code, 該賬戶發起合約次數nonce等-它們發生的所有變化,會首先快取到statedb裡的某個stateobject裡,然後在合適的時候,被statedb一起提交到底層資料庫。注意,乙個contract所對應的stateobject的位址,是contract的self位址,也就是轉帳的轉入方位址
容器和虛擬機器
說明 容器和虛擬機器都依賴於宿主機才能執行。宿主機可以是筆記本,是資料中心的物理伺服器,也可以是公有雲的某個例項。假設宿主機是一台需要執行 4 個業務應用的物理伺服器。在虛擬機器模型中,首先要開啟物理機並啟動 hypervisor 引導程式。一旦 hypervisor 啟動,就會占有機器上的全部物理...
辨析虛擬機器和ubuntu
相信剛開始接觸虛擬機器的同志都會分不清虛擬機器和ubuntu是什麼,和他們之間的關係,以及他們的作用。首先我們先說說虛擬機器是什麼。虛擬機器就是一款可以為其他系統來提供相應環境的軟體。比如你不想裝雙系統,因為這是有風險的,有可能會把你原系統裡的一些重要資料清除還有可能是你的電腦配置不允許 簡單來說就...
虛擬機器VirtualBox和Ubutu
設定 視訊記憶體 改成 32m 儲存 磁碟改成ubutu的iso檔案。網路 nat 虛擬電腦建立ok 啟動執行完成後,點選install圖示。選擇試用安裝,建立分割槽,1.建立主分割槽,型別 大小20g 2.建立邏輯分割槽,在空閒空間上選擇後 交換空間,2倍左右於虛擬電腦記憶體。3邏輯分割槽,boo...