Ⅰ 追蹤和管理數字資產新姿勢,教你學會查看區塊鏈賬單
賬單記錄價值流通和狀態,是金融服務的基礎功能。
我們常用的銀行、支付寶、微信支付等都會為普通用戶和商家記錄一筆交易,提供不同維度的查詢、統計和分析服務。
比如大家愛曬的支付寶年度賬單,會統計用戶全年的總收支、消費種類、余額寶和其他理財收益、點外賣的次數等。通過大數據技術,展示各個地域,不同年齡段的消費興趣和趨勢,讓消費者更了解自己周邊的消費環境,商家能夠及時把握市場需求。
在去中心化的區塊鏈網路里,交易被永久的記錄在鏈上,公開透明,人人可查。
但是由於區塊鏈的設計更傾向於保證不可篡改和數據壓縮需求,導致業務層面的過濾查詢功能缺失。 加上不同鏈的規則不同,追蹤和管理加密資產變的異常困難。這也是為什麼數字資產投資者常常感嘆「總覺得帳沒算明白「的原因所在。
SixPencer推出全新區塊鏈記賬神器,目前已支持比特幣(Bitcoin)和以太坊(Ethereum)底層的資產追蹤和管理,免費使用,無需注冊。
一經推出,受到了包括礦工、資管機構、OTC商戶、加密創業公司、數字資產投資者的喜愛。
作為專業的資管工具,不僅能夠查詢所有鏈上交易記錄,實時查看賬戶余額和持有資產,而且 提供每日各幣種收支情況、支持單或多地址聚合收支統計、地址畫像分析和圖表、大額交易記錄排行、聯系人管理等。
進入網站後, 在首頁搜索框,輸入比特幣或以太坊地址 , 點擊搜索即可進入該地址的總覽頁面。
我們以目前ETH持有量全網排名第一的地址: (標簽:bitfinex 1) 賬戶作為demo賬戶進行演示,所有數據均為真實鏈上數據。
這里簡單介紹下區塊鏈上的地址和銀行賬戶的區別。 在區塊鏈上,地址就類似於銀行卡號,知道地址就等於知道銀行卡號一樣,可以向其轉賬。
但不同的是, 區塊鏈是不可篡改的分布式公開賬本,通常具有匿名性,任何人可以對任何地址進行公開查詢。 銀行賬戶只能查詢本人的賬戶信息,無法通過銀行卡號得知其他人的賬戶信息。
如果用戶有多個地址,或者想追蹤其他地址,均可以通過搜索, 所有搜索過的地址信息會在資產組合頁面進行匯總,點擊下拉框即可切換或者刪除賬戶。
SixPencer除包含區塊鏈瀏覽器提供的基礎信息外,添加展示了一些個性化的指標,幫助用戶了解自己的鏈上畫像,也可以追蹤其他賬戶的鏈上軌跡。在下面總覽頁面可以查看地址的資產概覽、歷史指標、收支統計、持有資產信息。
地址概覽
創建時間:第一次收到ETH的日期
凈資產:所有資產,包含ERC20 token資產的合計美元價值
ETH排行:持有ETH數量在所有以太坊地址中的排名
ETH余額和估值:持有的ETH數量和其對應的美元價值
歷史指標
歷史指標展示交易量、交易次數、代幣分析和聯系人分析四大維度。 通過統計,算不清的糊塗賬終於能算清了,比如最簡單的會計計算,ETH總收入=ETH余額+ETH總支出+ETH總手續費。 再比如總交易次數=轉入交易次數+轉出交易次數。
由於以太坊網路的特殊性,所有轉賬的手續費都是以ETH支付。因此我們將手續費單獨羅列出來,在交易明細中也支持手續費單獨篩選,幫助用戶統計手續費支出。
一些有趣的數據,demo賬戶手續費支出為1.1556ETH,ETH單筆大額轉賬達90萬個ETH,持有代幣數量有350種,交易次數最多的代幣是USDT,與其交易過的地址僅37個。
一般持有上百種不同資產的地址通常都是交易所地址,加上交易次數和聯系人並不多,可以排除是對外地址,基本可以判斷是bitfinex交易所內部使用地址。
收支情況
統計了本月全部資產合計收入和支出,支出包含手續費支出。
持有資產情況
展示持有的資產數量、價值、資產價格和24h漲跌幅。demo賬戶這類交易所的地址,持有資產通常10頁都放不下。
SixPencer除了提供地址的交易流水外,還支持全歷史交易記錄查詢和篩選、余額信息、日收支統計等。
交易明細
從下面頁面可以清晰得知ETH資產的本月收支情況 ,用戶還可以根據日期,資金流向、交易分類和標簽系統進行篩選,根據自身需求進行更細致的統計,後面會介紹如何進行指定地址的交易篩選。
點擊上圖中的ETH下拉框,可以切換到其他幣種的交易詳情頁面 ,比如切換到USDT的交易詳情查看USDT的明細狀況。
除月賬單外,SixPencer展示每筆交易的交易明細,提供交易方向、交易對手方、交易金額、賬戶余額、交易時間、每日收支情況等信息。 下圖可以看到近6筆ETH交易均為從bitfinex 3 賬戶轉入bitfinex 1的交易。
交易詳情
點擊任意一筆交易明細,即可進入該筆交易的交易詳情頁。 交易哈希是每筆鏈上轉賬都有的唯一不可篡改的交易ID,類似於訂單號的概念。
通過交易哈希就可以查詢到一筆交易的具體信息。
下面所展示的交易數量、交易狀態、交易時間、發送和接受方、手續費等都是這筆交易的具體信息,在這里不再贅述。 值得注意的是,SixPencer提供個人標簽和備注系統,用戶可以對單筆交易,進行個性化分類和備注, 幫助記憶,不遺忘每一筆交易。
如何快速找到和指定地址的交易信息?
時間變久,交易變多後,查詢鏈上指定交易信息就變得異常復雜和困難,SixPencer將交易信息按照業務需求進行細化,並提供標簽系統輔助用戶進行自定義交易查詢和統計。
比如想要查詢2020年6月地址(標簽:bitfinex 3)一共向demo賬戶轉入了多少ETH。通過我們的賬單系統,僅需兩步操作即可查詢。
1、打標簽: 為了演示,我們將「bitfinex 3「這個標簽重命名為「測試test」。
2、篩選: 將日期篩選為6月1日-6月30日,在篩選欄 選中「轉入」,並在最下面的標簽欄選中「測試test」,點擊保存。
保存後即可搜索出所有6月「測試test」轉入到demo賬戶的交易信息,從下圖可以看出6月份,demo賬戶共從標簽為「測試test「的地址收到58,440.2489個ETH。
如果用戶想查詢和多個指定地址的交易,選中多個標簽後,調整日期、資金流向等信息即可進行資產的自動統計。
在分析一欄,用戶可以查詢地址不同維度的圖表分析信息,包含余額、交易、分類和排行四大維度。 分別點擊各維度還能夠查看更多詳細數據和圖表。
余額:余額展示資產的余額數量和價值走勢
交易:交易展示全部交易、轉入和轉出的交易數量、交易數量價值和交易次數走勢
分類:分類根據平台地址標簽系統對交易類型進行統計,反應地址的交易偏好
排行:排行按照交易次數展示活躍聯系人,按照交易金額展示大額交易
比如排行分析,能夠很快查看與某個地址的具體交易金額和大額轉賬情況。如下圖,demo賬戶與標簽為「測試test」 的地址在本月一共交易了177次,其他與demo賬戶交易較多的都是ERC20 Token合約調用交易。
從下圖看,大額排行也都是與標簽為「測試test」的地址交易信息,表格展示交易對象、交易時間、交易方向、交易數量和價值。 對交易所大戶感興趣的,可以查詢交易所地址的大額轉賬信息,看看哪些地址都是充提大戶。
通訊錄展示所有和demo賬戶有過交易記錄的地址,除平台自帶的標簽體系外,用戶可以對地址添加標簽或者重命名標簽。
標簽:展示平台標簽系統已知標簽和用戶自行添加的標簽
最近聯系人:展示最近30天有過交易記錄的地址/標簽
全部聯系人:展示所有有過交易記錄的聯系人地址/標簽,交易數量超過1萬筆的地址,取最近1萬筆交易的聯系人展示
綜上,SixPencer的全新資產追蹤和管理工具能夠提供比區塊鏈瀏覽器或者錢包更綜合的查詢和分析功能, 作為一款工具產品意在輔助用戶進行數字資產管理,通過對鏈上用戶畫像的進一步解析,幫助大家更好的決策。
我們認為區塊鏈的公開透明機制應該讓數據查詢更簡單,但目前按照實際業務需求快速查詢區塊鏈數據仍然是難點痛點,並成為商業落地的一大阻礙。
數字資產交易僅僅是其中一小塊,未來還將有大量有價值的數據存儲在區塊鏈上,SixPencer將繼續推出更多實用工具,讓數據更好為業務服務。
Ⅱ 【ETH錢包開發03】web3j轉賬ETH
在之前的文章中,講解了創建、導出、導入錢包。
【ETH錢包開發01】創建、導出錢包
【ETH錢包開發02】導入錢包
本文主要講解以太坊轉賬相關的一些知識。交易分為ETH轉賬和ERC-20 Token轉賬,本篇先講一下ETH轉賬。
1、解鎖賬戶發起交易。錢包keyStore文件保存在geth節點上,用戶發起交易需要解鎖賬戶,適用於中心化的交易所。
2、錢包文件離線簽名發起交易。錢包keyStore文件保存在本地,用戶使用密碼+keystore的方式做離線交易簽名來發起交易,適用於dapp,比如錢包。
本文主要講一下第二種方式,也就是錢包離線簽名轉賬的方式。
交易流程
1、通過keystore載入轉賬所需的憑證Credentials
2、創建一筆交易RawTransaction
3、使用Credentials對象對交易簽名
4、發起交易
注意以下幾點:
1、Credentials
這里,我是通過獲取私鑰的方式來載入 Credentials
還有另外一種方式,通過密碼+錢包文件keystore方式來載入 Credentials
2、nonce
nonce是指發起交易的賬戶下的交易筆數,每一個賬戶nonce都是從0開始,當nonce為0的交易處理完之後,才會處理nonce為1的交易,並依次加1的交易才會被處理。
可以通過 eth_gettransactioncount 獲取nonce
3、gasPrice和gasLimit
交易手續費由gasPrice 和gasLimit來決定,實際花費的交易手續費是 gasUsed * gasPrice 。所有這兩個值你可以自定義,也可以使用系統參數獲取當前兩個值
關於 gas ,你可以參考我之前的一篇文章。
以太坊(ETH)GAS詳解
gasPrice和gasLimit影響的是轉賬的速度,如果gas過低,礦工會最後才打包你的交易。在app中,通常給定一個默認值,並且允許用戶自己選擇手續費。
如果不需要自定義的話,還有一種方式來獲取。獲取以太坊網路最新一筆交易的 gasPrice ,轉賬的話, gasLimit 一般設置為21000就可以了。
Web3j還提供另外一種簡單的方式來轉賬以太幣,這種方式的好處是不需要管理nonce,不需要設置gasPrice和gasLimit,會自動獲取最新一筆交易的gasPrice,gasLimit 為21000(轉賬一般設置成這個值就夠用了)。
這個問題,我想是很多朋友所關心的吧。但是到目前為止,我還沒有看到有講解這方面的博客。
之前問過一些朋友,他們說可以通過區塊號、區塊哈希來判斷,也可以通過Receipt日誌來判斷。但是經過我的一番嘗試,只有 BlockHash 是可行的,在web3j中根據 blocknumber 和 transactionReceipt 都會報空指針異常。
原因大致是這樣的:在發起一筆交易之後,會返回 txHash ,然後我們可以根據這個 txHash 去查詢這筆交易相關的信息。但是剛發起交易的時候,由於手續費問題或者乙太網絡擁堵問題,會導致你的這筆交易還沒有被礦工打包進區塊,因此一開始是查不到的,通常需要幾十秒甚至更長的時間才能獲取到結果。我目前的解決方案是輪詢的去刷 BlockHash ,一開始的時候 BlockHash 的值為0x00000000000,等到打包成功的時候就不再是0了。
這里我使用的是rxjava的方式去輪詢刷的,5s刷新一次。
正常情況下,幾十秒內就可以獲取到區塊信息了。
區塊確認數=當前區塊高度-交易被打包時的區塊高度。
Ⅲ 以太坊獲取測試鏈代幣
發起以太坊交易時需要消耗以太幣,開發智能合約做測試時如果在主網做測試成本會很高,並且主網的速度也比較慢,以太坊官方考慮到大家的這個需求提供了幾條測試鏈供大家使用,比較知名的有以下這幾個
以太坊的主測試網,環境最接近主網環境,有實際的雷鋒礦工在挖礦,只不過難度會比主網低很多,不過由於 Ropsten 採用與主網完全一樣的 PoW 共識,有時也就會和主網一樣擁堵,在這條鏈上做測試更容易測試出智能合約或者dapp里潛在的問題
用的是 PoA 機制,無需挖礦,所以出塊很快而且很穩定
和Rinkeby同樣使用的是 PoA 機制
打開這個網址 https://faucet.metamask.io/
點擊 request 1 ether from faucet 按鈕會通過web3連接錢包,獲取到錢包當前賬戶的以太坊地址,這個我使用的錢包是MetaMask,如果你沒有裝支持web3訪問的錢包,可以參考這篇文章安裝
https://www.jianshu.com/p/a84fe16f1af7
點擊連接
連接成功後底部會生成一筆交易,hash值
等交易確認後一個以太坊就到賬了
Rinkeby獲取測試幣相對麻煩些,需要注冊twitter賬號(需要翻牆)
打開這個網址 https://twitter.com/intent/tweet?text=Requesting%20faucet%20funds%20into%%20on%20the%20%23Rinkeby%20%23Ethereum%20test%20network
把推文中替換成你的地址點擊TWEET,發送成功後點擊分享圖標選擇Copy link to Tweet,把推文的鏈接復制下來
然後打開Rinkeby測試幣水龍頭網頁 https://www.rinkeby.io/#faucet
把剛才那個推文鏈接復制進輸入框,點擊Give me Ether
根據你的需要選擇要多少個代幣,要的越多到賬越慢😓,到賬時間相對其它的測試鏈很慢,如果著急就用別的鏈做測試
打開這個網址 https://faucet.kovan.network/ ,需要使用github賬號登陸
登陸成功後輸入以太坊地址,點擊發送就好了,轉賬交易就提交到鏈上了
同樣的等待交易確認就能收到一個以太幣了
Ⅳ luno發送ETH對方還沒確認可以取消嗎
luno發送ETH,對方還沒確認是可以取消的。如果交易提交了但還沒被確認則可以取消。以太坊是一個基於區塊鏈的開源軟體平台,擁有數以千計的去中心化應用程序 (DApp),為其原生加密貨幣以太 (ETH) 提供支持,可以在全球范圍內發送和接收,而不受任何第三方干擾。
取消的操作:
取消待處理的以太坊交易有兩種主要方法:應用程序內取消和設置自定義隨機數。通常,當用戶以較低的 gas 價格提交時,以太坊交易會掛起數小時或卡住。 因此,用戶經常發現有必要更改以太坊交易。
在解決這個問題時,用戶需要記住只有當交易仍在網路上未決時才能嘗試取消。 他們需要採取的第一步是在區塊瀏覽器中驗證交易是否仍在等待中。 主要是粘貼交易哈希,也稱為以太坊交易 ID,如果區塊瀏覽器顯示「待處理」,用戶仍然可以嘗試取消它。
取消卡住的以太坊交易的最簡單方法是應用程序內取消,這需要用戶退出以太坊錢包應用程序並關閉瀏覽器,重新打開並重新登錄應用程序。
Ⅳ ETH轉賬的2種方式的對比
web3j支持使用以太坊錢包文件(推薦)和乙太網客戶端管理命令來發起一筆交易。當你創建了一個擁有以太幣的賬戶後,你可以通過以下兩種交易機制,和以太坊網路(私網/公網)交易:
這里主要講一下 線下簽名交易(Offline transaction signing) 。線下簽名交易允許你使用web3j提供的錢包賬戶發起交易,你完全控制自己的私鑰,交易發送到網路上的其它節點並廣播。
線下簽名交易使用 RawTransaction 對象來完成,一共有如下幾步:
1、通過私鑰或密碼+錢包文件(keystore)來載入轉賬憑證Credentials
2、獲取發起轉賬賬戶的nonce 值,也就是第幾筆交易
3、創建 RawTransaction交易 對象
4、簽名 RawTransaction 對象,也就是對交易做簽名
5、發送交易( RawTransaction 對象)給節點處理。
6、獲取交易哈希值TxHash
以太坊實戰-再談nonce使用陷阱: https://blog.csdn.net/wo541075754/article/details/79054937
此外,還有一種簡單的轉賬方式
這種方式,不需要自己管理nonce。
這2種方式都是離線交易,先組裝交易,然後發送到鏈上。
參考:
https://docs.web3j.io/getting_started.html#transactions
https://www.jianshu.com/p/6650d2a3aea9
Ⅵ 以太坊的ABI編碼
ABI全稱Application Binary Interface, 是調用智能合約函數以及合約之間函數調用的消息編碼格式定義,也可以理解為智能合約函數調用的介面說明. 類似Webservice里的SOAP協議一樣;也就是定義操作函數簽名,參數編碼,返回結果編碼等。
使用ABI協議時必須要求在編譯時知道類型,即強類型相關.
當一個智能合約編譯出來後, 他的abi介面定義就確定了. 比如下面的智能合約:
生成的位元組碼:
生成的abi定義:
可以看出, 生成abi包含了2個定義: 函數 lotus , 事件 Log_lotus , 各個欄位含義見上. 根據該abi定義,就可以生成調用該智能合約函數的abi格式的數據了.
格式簡單的可以表示為: 函數選擇器+參數編碼
一個函數調用的前四個位元組數據指定了要調用的函數簽名。計算方式是使用函數簽名的 keccak256 的哈希,取4個位元組。
函數名如果有多個參數使用,隔開,要去掉表達式中的所有空格。在geth客戶端,通過命令可以得到hash:
由於前面的函數簽名使用了四個位元組,參數的數據將從第五個位元組開始。
根據參數類型,編碼規則有所區別:
除了bytes,和string, 其他類型的數據不足32位元組長度的需要加0補足32位元組. 動態長度的編碼在例子中介紹.
函數: function baz(uint32 x, bool y) :
調用: baz(69, true)
生成的數據如下:
返回結果是一個bool值,在這里,返回的是false:
函數: f(uint,uint32[],bytes10,bytes)
調用: (0x123, [0x456, 0x789], "1234567890", "Hello, world!")
函數選擇器: bytes4(sha3("f(uint256,uint32[],bytes10,bytes)"))
對於 固定大小的類型 值 uint256 和 bytes10 ,直接編碼值。
對於 動態內容類型 值 uint32[] 和 bytes ,我們先 編碼偏移值 ,偏移值是整個值編碼的開始到真正存這個數據的偏移值(這里不計算頭四個用於表示函數簽名的位元組)。
所以參數編碼數據依次為:
尾部部分的第一個動態參數, [0x456, 0x789] 編碼拆解如下:
最後我們來看看第二個動態參數的的編碼, Hello, world! 。
所以最終結果是:
Ⅶ 說說哈希未來與哈希世界上鏈資產那些事兒
本文關聯詞:「哈希未來」(回答哈希世界是誰、從哪來、到哪去的問題)、「上鏈資產」(回答哈希土地價值幾何的問題)、「那些事兒」(展望哈希未來的未來)。
一、首先講一下「哈希未來」。
在目前區塊鏈的格局中,相比市場上大多在天上飄的公鏈,哈希未來屬於非常明顯的應用鏈。
公鏈的難點在於需要無比強大的技術支撐、應用開發和共識機制,才有可能存活下來;公鏈容易的地方在於好忽悠、賺錢快,只要嘴皮子利落,搞點媒體和資金進來,一張PPT也能飛上天。公鏈的正面和反面例子,本文不做評價,諸位自行判斷。
應用鏈與公鏈有非常大的不同。應用鏈必須要有規劃、場景、人群、上下游支持,才有做起來的可能。相比公鏈,應用鏈光有PPT是不行的。因為用戶對應用的體驗是真實的。
那麼問題來了,哈希未來到底是什麼?
按照《哈希未來白皮書》的說法,「作為連接物質世界和數字世界的平台和橋梁,哈希未來的目標是解決人們在當前數字時代背景下,所面臨的數字資產確權和交易難題。」「哈希世界結合人類歷史上的資產確權、流轉的制度結晶與數字時代的發展脈搏,打造出協議層—技術層—應用層三位一體的新興區塊鏈數字資產確權、流通、交易平台」。
簡單概括:哈希未來的應用在於運用資產/ 商品上鏈、跨鏈技術,進行確權、交易或流轉。
上面這段話裡面,比如像 確權 、 交易制度 、 三個技術層 、 上鏈 、 跨鏈 等這幾個詞,每個詞都可以提一大堆問題和解決方案,都能做一篇論文出來。在實踐中,國內市場上已經有先發的幾家在做資產上鏈了,遺憾的是,目前還沒有哪家有落地的應用出來。
國內的企業在區塊鏈化的過程中,一般有兩類。一類是先上鏈,再上應用。還有一類是先上應用,再上鏈。至少目前來看,前一類就像漂亮的空中樓閣般可見不可用(如下圖的生態化反還是生態畫反),後一類則如龜兔賽跑的烏龜那樣的執著堅持。
在這一點上,很明顯,哈希未來屬於後者。哈希未來雖然後發力,但是已經通過哈希世界摸索出一條資產上鏈和跨鏈的通道,並且在法律配套和線下的操作層面都做了許多工作,後續將上鏈/跨鏈技術擴展到許多其他資產領域。不得不說,哈希在一步一步的做事情,並不是單純的做PPT。
二、重要的「上鏈資產」
上文提及,「哈希世界」是「哈希未來」最重要的上鏈資產。那麼,「哈希世界」究竟是什麼資產?「哈希世界」的未來又會如何?
「哈希世界」是哈希未來最重要的虛擬資產。期初是用於哈希未來跑通上鏈/跨鏈通道的重要實驗。「哈希世界」實驗成功後,哈希未來需要把眾多的實物資產類型也擴展納入哈希未來的上鏈/跨鏈版圖。這些實物資產類型包括珠寶玉石、文玩字畫、海外土地等等。
那麼,下面就是一個大家都很關心的問題——「哈希世界」中的哈希土地這種虛擬資產有無價值?價值幾何?未來如何?
最初的虛擬資產主要是指游戲幣、網路游戲賬號\裝備等等,這類虛擬資產以游戲作為基礎共識,並在玩家之間進行交易流轉。
現在的虛擬資產主要是指BTC,更准確的叫法是加密數字資產。BTC依靠強大的POW共識、礦工維護和社區建設,在近十年的時間里,達到目前9000多億的市值。
那麼「哈希世界」的哈希土地將來是否會有同樣的輝煌?哈希土地是基於以太坊ERC-721技術的,在官方用HSC進行交易的虛擬資產。
哈希土地不同於以太貓(CryptoKitties)等市場上其他基於ERC-721的數字游戲。哈希世界的哈希土地有現金流,有預期收益,有游戲屬性,有上鏈跨鏈技術,有應用前景,有交易市場。哈希土地的未來應用前景——比如廣告招商、線上線下互聯等,如果要畫PPT去講,也可以單獨一篇論文,本文略過。僅就目前哈希土地已有的這些特徵全部符合投資學中的資產基本屬性。
那麼,哈希土地作為資產如何估值呢?區塊鏈資產並不適用於傳統的CAPM(資本資產定價模型)、證券市場PE/PB估值、公司企業的現金流等估值模型等。區塊鏈是一個生產關系的體系,更適合用「費雪模型」這種計算token供應、流通、物價和各類資產/商品交易總量的宏觀經濟模型,來進行估值。
「費雪模型」表達式為:MV = PQ
M:在一個經濟體中,貨幣的平均供應量(在數字貨幣中,代表Token的供應量);
V:貨幣(或者Token)的流通速度;
P:貨幣(或者Token)的價格;
Q:各類資產/商品的交易總量。
那麼,P= MV/Q
而在統一共識的假設條件下(即哈希土地與HSC的自由兌換,HSC與各類資產/商品的自由兌換),哈希土地資產的估值=HSC的市值=基於HSC的所有應用的價值。已知HSC總量500億個,哈希土地創世土地4000塊,未知是HSC的未來流通速度和哈希未來有多少資產/商品上鏈,大家自行帶入變數計算哈希土地價值吧。
三、引申講講「那些事兒」
資產的類型是實物的、虛擬的,還是數字的,其實跟資產的價值連一個HSC的關系都沒有。是否屬於資產,資產是否值錢只與該資產形成的共識有關。人類文明的歷史上,貝殼、石頭、琉璃、黃金等等,都充當過作為流通的一般等價物資產,其他作為資產標的的物品就更多了。這些資產中,目前還有共識的就是黃金,BTC都有取而代之的趨勢。
在區塊鏈這場生產關系變革中,生產關系將真正成為第一生產力。哪條鏈聚攏了更多資源,那他所形成的共識就會越大。哈希未來在開創了哈希世界之後,需要以哈希世界為根基,盡可能的擴展共識,覆蓋到各類資產/商品上面。待到樹已參天,待你長發及腰,再看哈希未來,招呼一聲「Hello Future , This is my World」
Ⅷ 以太坊轉賬流程
發起:用戶在本地的以太坊錢包軟體中選擇要發送的交易地址(From)、輸入目標地址(To)、金額(Value)、是否部署或調用合(Data)、手續費單價(Gasprice)等,確認發送至以太坊節點節點和錢包可以是同一台
廣播:節點收到(或自己發起)交易後,會對交易進行驗證。驗證:交易的簽名、發起賬號的余額是否能支付轉賬余額與手續費、Nonce是否為賬號已發出的交易數。驗證為合法後,將交易加入節點的交易池中交易池中存儲著待打包的交
安裝以太坊瀏覽器錢包插件,創建錢包,獲取虛擬以太幣,進行轉賬交易。 實驗內容 學習 初識以太坊,發送交易 1.學習《初始以太坊,發送交易》,虛擬以太幣交易。
Ⅸ 小白如何秒懂區塊鏈中的哈希計算
小白如何秒懂區塊鏈中的哈希計算
當我在區塊鏈的學習過程中,發現有一個詞像幽靈一樣反復出現,「哈希」,英文寫作「HASH」。
那位說「拉稀」同學你給我出去!!
這個「哈希」據說是來源於密碼學的一個函數,嘗試搜一搜,論文出來一堆一堆的,不是橫式就是豎式,不是表格就是圖片,還有一堆看不懂得xyzabc。大哥,我就是想了解一下區塊鏈的基礎知識,給我弄那麼難幹啥呀?!我最長的密碼就是123456,復雜一點的就是654321,最復雜的時候在最後加個a,你給我寫的那麼復雜明顯感覺腦力被榨乾,僅有的腦細胞成批成批的死亡!為了讓和我一樣的小白同學了解這點,我就勉為其難,努力用傻瓜式的語言講解一下哈希計算,不求最准確但求最簡單最易懂。下面我們開始:
# 一、什麼是哈希演算法
## 1、定義:哈希演算法是將任意長度的字元串變換為固定長度的字元串。
從這里可以看出,可以理解為給**「哈希運算」輸入一串數字,它會輸出一串數字**。
如果我們自己定義 「增一演算法」,那麼輸入1,就輸出2;輸入100就輸出101。
如果我我們自己定義「變大寫演算法」,那麼輸入「abc」輸出「ABC」。
呵呵,先別打我啊!這確實就只是一個函數的概念。
## 2、特點:
這個哈希演算法和我的「增一演算法」和「變大寫演算法」相比有什麼特點呢?
1)**確定性,算得快**:咋算結果都一樣,算起來效率高。
2)**不可逆**:就是知道輸出推不出輸入的值。
3)**結果不可測**:就是輸入變一點,結果天翻地覆毫無規律。
總之,這個哈希運算就是個黑箱,是加密的好幫手!你說「11111」,它給你加密成「」,你說「11112」它給你弄成「」。反正輸入和輸出一個天上一個地下,即使輸入相關但兩個輸出毫不相關。
# 二、哈希運算在區塊鏈中的使用
## 1、數據加密
**交易數據是通過哈希運算進行加密,並把相應的哈希值寫入區塊頭**。如下圖所示,一個區塊頭包含了上一個區塊的hash值,還包含下一個區塊的hash值。
1)、**識別區塊數據是否被篡改**:區塊鏈的哈希值能夠唯一而精準地標識一個區塊,區塊鏈中任意節點通過簡單的哈希計算都可以獲得這個區塊的哈希值,計算出的哈希值沒有變化也就意味著區塊鏈中的信息沒有被篡改。
2)、**把各個區塊串聯成區塊鏈**:每個區塊都包含上一個區塊的哈希值和下一個區塊的值,就相當於通過上一個區塊的哈希值掛鉤到上一個區塊尾,通過下一個區塊的哈希值掛鉤到下一個區塊鏈的頭,就自然而然形成一個鏈式結構的區塊鏈。
## 2、加密交易地址及哈希
在上圖的區塊頭中,有一個Merkle root(默克爾根)的哈希值,它是用來做什麼的呢?
首先了解啥叫Merkle root? 它就是個二叉樹結構的根。啥叫二叉樹?啥叫根?看看下面的圖就知道了。一分二,二分四,四分八可以一直分下去就叫二叉樹。根就是最上面的節點就叫 根。
這個根的數據是怎麼來的呢?是把一個區塊中的每筆交易的哈希值得出後,再兩兩哈希值再哈希,再哈希,再哈希,直到最頂層的數值。
這么哈希了半天,搞什麼事情?有啥作用呢?
1)、**快速定位每筆交易**:由於交易在存儲上是線性存儲,定位到某筆交易會需要遍歷,效率低時間慢,通過這樣的二叉樹可以快速定位到想要找的交易。
舉個不恰當的例子:怎麼找到0-100之間的一個任意整數?(假設答案是88)那比較好的一個方法就是問:1、比50大還是小?2、比75大還是小?3、比88大還是小? 僅僅通過幾個問題就可以快速定位到答案。
2)、**核實交易數據是否被篡改**:從交易到每個二叉樹的哈希值,有任何一個數字有變化都會導致Merkle root值的變化。同時,如果有錯誤發生的情況,也可以快速定位錯誤的地方。
## 3、挖礦
在我們的區塊頭中有個參數叫**隨機數Nonce,尋找這個隨機數的過程就叫做「挖礦」**!網路上任何一台機器只要找到一個合適的數字填到自己的這個區塊的Nonce位置,使得區塊頭這6個欄位(80個位元組)的數據的哈希值的哈希值以18個以上的0開頭,誰就找到了「挖到了那個金子」!既然我們沒有辦法事先寫好一個滿足18個0的數字然後反推Nounce,唯一的做法就是從0開始一個一個的嘗試,看結果是不是滿足要求,不滿足就再試下一個,直到找到。
找這個數字是弄啥呢?做這個有什麼作用呢?
1)、**公平的找到計算能力最強的計算機**:這個有點像我這里有個沙子,再告訴你它也那一個沙灘的中的一粒相同,你把相同的那粒找出來一樣。那可行的辦法就是把每一粒都拿起來都比較一下!那麼比較速度最快的那個人是最有可能先早到那個沙子。這就是所謂的「工作量證明pow」,你先找到這個沙子,我就認為你比較的次數最多,乾的工作最多。
2)、**動態調整難度**:比特幣為了保證10分鍾出一個區塊,就會每2016個塊(2周)的時間計算一下找到這個nonce數字的難度,如果這2016個塊平均時間低於10分鍾則調高難度,如高於十分鍾則調低難度。這樣,不管全網的挖礦算力是怎麼變化,都可以保證10分鍾的算出這個隨機數nonce。
# 三、哈希運算有哪些?
說了這么多哈希運算,好像哈希運算就是一種似的,其實不是!作為密碼學中的哈希運算在不斷的發展中衍生出很多流派。我看了」滿頭包」還是覺得內在機理也太復雜了,暫時羅列如下,小白們有印象知道是怎麼回事就好。
從下表中也可以看得出,哈希運算也在不斷的發展中,有著各種各樣的演算法,各種不同的應用也在靈活應用著單個或者多個演算法。比特幣系統中,哈希運算基本都是使用的SHA256演算法,而萊特幣是使用SCRYPT演算法,誇克幣(Quark)達世幣(DASH)是把很多演算法一層層串聯上使用,Heavycoin(HAV)卻又是把一下演算法並聯起來,各取部分混起來使用。以太坊的POW階段使用ETHASH演算法,ZCASH使用EQUIHASH。
需要說明的是,哈希運算的各種演算法都是在不斷升級完善中,而各種幣種使用的演算法也並非一成不變,也在不斷地優化中。
**總結**:哈希運算在區塊鏈的各個項目中都有著廣泛的應用,我們以比特幣為例就能看到在**數據加密、交易數據定位、挖礦等等各個方面都有著極其重要的作用**。而哈希運算作為加密學的一門方向不斷的發展和延伸,身為普通小白的我們,想理解區塊鏈的一些基礎概念,了解到這個層面也已經足夠。
Ⅹ 【以太坊易錯概念】nonce, 公私鑰和地址,BASE64/BASE58,
以太坊里的nonce有兩種意思,一個是proof of work nonce,一個是account nonce。
在智能合約里,nonce的值代表的是該合約創建的合約數量。只有當一個合約創建另一個合約的時候才會增加nonce的值。但是當一個合約調用另一個合約中的method時 nonce的值是不變的。
在以太坊中nonce的值可以這樣來獲取(其實也就是屬於一個賬戶的交易數量):
但是這個方法只能獲取交易once的值。目前是沒有內置方法來訪問contract中的nonce值的
通過橢圓曲線演算法生成鑰匙對(公鑰和私鑰),以太坊採用的是secp256k1曲線,
公鑰採用uncompressed模式,生成的私鑰為長度32位元組的16進制字串,公鑰為長度64的公鑰字串。公鑰04開頭。
把公鑰去掉04,剩下的進行keccak-256的哈希,得到長度64位元組的16進制字串,丟掉前面24個,拿後40個,再加上"0x",即為以太坊地址。
整個過程可以歸納為:
2)有些網關或系統只能使用ASCII字元。Base64就是用來將非ASCII字元的數據轉換成ASCII字元的一種方法,而且base64特別適合在http,mime協議下快速傳輸數據。Base64使用【字母azAZ數字09和+/】這64個字元編碼。原理是將3個位元組轉換成4個位元組(3 X 8) = 24 = (4 X 6)
當剩下的字元數量不足3個位元組時,則應使用0進行填充,相應的,輸出字元則使用'='佔位,因此編碼後輸出的文本末尾可能會出現1至2個'='。
1)Base58是用於Bitcoin中使用的一種獨特的編碼方式,主要用於產生Bitcoin的錢包地址。相比Base64,Base58不使用數字"0",字母大寫"O",字母大寫"I",和字母小寫"l",以及"+"和"/"符號。
Base58Check是一種常用在比特幣中的Base58編碼格式,增加了錯誤校驗碼來檢查數據在轉錄中出現的錯誤。 校驗碼長4個位元組,添加到需要編碼的數據之後。校驗碼是從需要編碼的數據的哈希值中得到的,所以可以用來檢測並避免轉錄和輸入中產生的錯誤。使用 Base58check編碼格式時,編碼軟體會計算原始數據的校驗碼並和結果數據中自帶的校驗碼進行對比。二者不匹配則表明有錯誤產生,那麼這個 Base58Check格式的數據就是無效的。例如,一個錯誤比特幣地址就不會被錢包認為是有效的地址,否則這種錯誤會造成資金的丟失。
為了使用Base58Check編碼格式對數據(數字)進行編碼,首先我們要對數據添加一個稱作「版本位元組」的前綴,這個前綴用來明確需要編碼的數 據的類型。例如,比特幣地址的前綴是0(十六進制是0x00),而對私鑰編碼時前綴是128(十六進制是0x80)。 表4-1會列出一些常見版本的前綴。
接下來,我們計算「雙哈希」校驗碼,意味著要對之前的結果(前綴和數據)運行兩次SHA256哈希演算法:
checksum = SHA256(SHA256(prefix+data))
在產生的長32個位元組的哈希值(兩次哈希運算)中,我們只取前4個位元組。這4個位元組就作為校驗碼。校驗碼會添加到數據之後。
結果由三部分組成:前綴、數據和校驗碼。這個結果採用之前描述的Base58字母表編碼。下圖描述了Base58Check編碼的過程。
相同:
1) 哈希演算法、Merkle樹、公鑰密碼演算法
https://blog.csdn.net/s_lisheng/article/details/77937202?from=singlemessage
2)全新的 SHA-3 加密標准 —— Keccak
https://blog.csdn.net/renq_654321/article/details/79797428
3)在線加密演算法
http://tools.jb51.net/password/hash_md5_sha
4)比特幣地址生成演算法詳解
https://www.cnblogs.com/zhaoweiwei/p/address.html
5)Base58Check編碼實現示例
https://blog.csdn.net/QQ604666459/article/details/82419527
6) 比特幣交易中的簽名與驗證
https://www.jianshu.com/p/a21b7d72532f