『壹』 什麼是以太幣/以太坊ETH
以太幣(ETH)是以太坊(Ethereum)的一種數字代幣,被視為「比特幣2.0版」,採用與比特幣不同的區塊鏈技術「以太坊」(Ethereum),一個開源的有智能合約成果的民眾區塊鏈平台,由全球成千上萬的計算機構成的共鳴網路。開發者們需要支付以太幣(ETH)來支撐應用的運行。和其他數字貨幣一樣,以太幣可以在交易平台上進行買賣 。
溫馨提示:以上解釋僅供參考,不作任何建議。入市有風險,投資需謹慎。您在做任何投資之前,應確保自己完全明白該產品的投資性質和所涉及的風險,詳細了解和謹慎評估產品後,再自身判斷是否參與交易。
應答時間:2020-12-02,最新業務變化請以平安銀行官網公布為准。
[平安銀行我知道]想要知道更多?快來看「平安銀行我知道」吧~
https://b.pingan.com.cn/paim/iknow/index.html
『貳』 【以太坊易錯概念】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
『叄』 以太坊獲取測試鏈代幣
發起以太坊交易時需要消耗以太幣,開發智能合約做測試時如果在主網做測試成本會很高,並且主網的速度也比較慢,以太坊官方考慮到大家的這個需求提供了幾條測試鏈供大家使用,比較知名的有以下這幾個
以太坊的主測試網,環境最接近主網環境,有實際的雷鋒礦工在挖礦,只不過難度會比主網低很多,不過由於 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賬號登陸
登陸成功後輸入以太坊地址,點擊發送就好了,轉賬交易就提交到鏈上了
同樣的等待交易確認就能收到一個以太幣了
『肆』 以太坊區塊鏈之Bug --2020/05/19
為了防止交易重播,ETH(ETC)節點要求每筆交易必須有一個nonce數值。每一個賬戶從同一個節點發起交易時,這個nonce值從0開始計數,發送一筆nonce對應加1。當前面的nonce處理完成之後才會處理後面的nonce。注意這里的前提條件是相同的地址在相同的節點發送交易。
以下是nonce使用的幾條規則:
● 當nonce太小(小於之前已經有交易使用的nonce值),交易會被直接拒絕。
● 當nonce太大,交易會一直處於隊列之中,這也就是導致我們上面描述的問題的原因;
● 當發送一個比較大的nonce值,然後補齊開始nonce到那個值之間的nonce,那麼交易依舊可以被執行。
● 當交易處於queue中時停止geth客戶端,那麼交易queue中的交易會被清除掉。
第一個欄位 AccountNonce ,直譯就是賬戶隨機數。它是以太坊中很小但也很重要的一個細節。以太坊為每個賬戶和交易都創建了一個Nonce,當從賬戶發起交易的時候,當前賬戶的Nonce值就被作為交易的Nonce。這里,如果是普通賬戶那麼Nonce就是它發出的交易數,如果是合約賬戶就是從它的創建合約數。
為什麼要使用這個Nonce呢?其主要目的就是為了防止重復攻擊(Replay Attack)。因為交易都是需要簽名的,假定沒有Nonce,那麼只要交易數據和發起人是確定的,簽名就一定是相同的,這樣攻擊者就能在收到一個交易數據後,重新生成一個完全相同的交易並再次提交,比如A給B發了個交易,因為交易是有簽名的,B雖然不能改動這個交易數據,但只要反復提交一模一樣的交易數據,就能把A賬戶的所有資金都轉到B手裡。
當使用賬戶Nonce之後,每次發起一個交易,A賬戶的Nonce值就會增加,當B重新提交時,因為Nonce對不上了,交易就會被拒絕。這樣就可以防止重復攻擊。當然,事情還沒有完,因為還能跨鏈實施攻擊,直到EIP-155引入了chainID,才實現了不同鏈之間的交易數據不兼容。事實上,Nonce並不能真正防止重復攻擊,比如A向B買東西,發起交易T1給B,緊接著又提交另一個交易T2,T2的Gas價格更高、優先順序更高將被優先處理,如果恰好T2處理完成後剩餘資金已經不足以支付T1,那麼T1就會被拒絕。這時如果B已經把東西給了A,那A也就攻擊成功了。所以說,就算交易被處理了也還要再等待一定時間,確保生成足夠深度的區塊,才能保證交易的不可逆。
Price 指的是單位Gas的價格,所謂Gas就是交易的消耗,Price就是單位Gas要消耗多少以太幣(Ether),Gas * Price就是處理交易需要消耗多少以太幣,它就相當於比特幣中的交易手續費。
GasLimit 限定了本次交易允許消耗資源的最高上限,換句話說,以太坊中的交易不可能無限制地消耗資源,這也是以太坊的安全策略之一,防止攻擊者惡意佔用資源。
Recipient 是交易接收者,它是common.Address指針類型,代表一個地址。這個值也可以是空的,這時在交易執行時,會通過智能合約創建一個地址來完成交易。
Amount 是交易額。這個簡單,不用解釋。
Payload 比較重要,它是一個位元組數組,可以用來作為創建合約的指令數組,這時每個位元組都是一個單獨的指令;也可以作為數據數組,由合約指令來進行操作。合約由以太坊虛擬機(Ethereum Virtual Machine,EVM)創建並執行。
V、R、S 是交易的簽名數據。以太坊當中,交易經過數字簽名之後,生成的signature是一個長度65的位元組數組,它被截成三段,前32位元組被放進R,再32位元組放進S,最後1個位元組放進V。那麼為什麼要被截成3段呢?以太坊用的是ECDSA演算法,R和S就是ECSDA簽名輸出,V則是Recovery ID。
R,S,V是交易簽名後的值,它們可以被用來生成簽名者的公鑰;R,S是ECDSA橢圓加密演算法的輸出值,V是用於恢復結果的ID
『伍』 以太坊中的國際銀行賬號iban
簡單地說,以太坊中的iban賬號是以太坊為了和傳統的銀行系統對接而引入的概念,web3.js中提供了以太坊地址和iban地址之間的轉換方法。
iban這個概念源於傳統的銀行系統,其英文全稱為 International Bank Account Number ,即國際銀行帳號。iban的作用是為全球任意一家銀行中的任意一個賬戶生成一個全球唯一的賬號,以便進行跨行交易。一個iban賬號看起來像這樣:
iban地址最多可以包含34個字母和數字,其中的字母大小寫不敏感。在iban
中包含以下信息:
以太坊引入了一個新的IBAN國別碼:XE,其中E代表Ethereum,X代表非法幣(non-jurisdictional currencies)。同時,以太坊提出了三種BBAN的編碼格式:direct、basic和indirect。
direct編碼方案中的BBAN為30個字母/數字,只有一個欄位:賬戶編號。例如,以太坊地址 轉換為direct方案的BBAN賬號,就得到 。
可以使用web3.js中的 web3.eth.Iban.fromEthereumAddress()
方法來執行這一轉換:
basic編碼方案與direct方案的唯一區別在於,其BBAN長度為31個字母/數字,因此該方案不兼容IBAN。
indrect編碼方案中的BBAN長度為16個字母/數字,包含三個欄位:
例如,一個採用indrect編碼方案的以太坊iban賬號,看起來是這樣:
前面的 XE 表示國別碼, 81 為校驗和,後面的16個字元就是indrect編碼的BBAN,其中:
如前所述,使用 web3.eth.Iban.fromEthereumAddress() 方法,可以將一個以太坊地址轉換為direct編碼方案的iban賬號。與之對應的,可以使用 web3.eth.Iban.toAddress 方法,將一個採用direct編碼方案的iban賬號,轉換回以太坊地址。例如:
iban賬號中的校驗和用來幫助核驗一個給定字元串是否為有效的iban賬號。可以使用web3.js中的 web3.eth.Iban.isValid()
來進行執行校驗。例如:
原文: http://blog.hubwiz.com/2018/06/03/ethereum-iban/
『陸』 如何保持你的以太坊的幣的安全和保值
可以把你買的貨幣轉到以太坊錢包里就不必擔心你的幣沒了。
數字貨幣(Digital Currency,簡稱DC)是電子貨幣形式的替代貨幣,是一種不受管制的、數字化的貨幣,通常由開發者發行和管理,被特定虛擬社區的成員所接受和使用。數字金幣和密碼貨幣都屬於數字貨幣。
它不同於虛擬世界中的虛擬貨幣,因為它能被用於真實的商品和服務交易,而不局限在網路游戲中,早期的數字貨幣(數字黃金貨幣)是一種以黃金重量命名的電子貨幣形式,現在的數字貨幣,比如比特幣、萊特幣和PPCoin是依靠校驗和密碼技術來創建、發行和流通的電子貨幣。
貨幣定義:
數字黃金貨幣是一種以黃金重量命名的電子貨幣形式,這種貨幣的典型計量單位是金衡制克或者金衡制盎司,盡管有時候也使用黃金迪納爾做單位。
數字黃金貨幣通過未配額或者分散配額的黃金存儲來資助,到2006年1月,數字黃金貨幣供應商持有超過8.6公噸的黃金作為儲備,價值大約1.54億美元。
『柒』 以太坊的「分片」是指什麼
「分片」的大致思路是:將區塊鏈網路中的每個區塊變為一個子區塊鏈,子區塊鏈中可以容納若干(目前為 100 個)打包了交易數據的 Collation(大概可以稱為「校驗塊」,為了在分片的情景中將其與區塊的概念區分開),這些 Collation 最終組成一個在主鏈上區塊;因為這些 Collation 是整體作為區塊存在的,所以其數據必定是全部由某個特定的礦工所打包生成,本質上和現有協議中的區塊沒有區別,所以不再需要增加額外的網路確認。這樣,每個區塊的交易容量就大概擴大了 100 倍;而且這種設計還有利於未來的繼續擴展。整個擴展計劃目前也被大致分為 4 個階段;本文所介紹的僅僅是第一階段的相關實現細節。轉自簡書。數字貨幣交易所幣匯
『捌』 以太坊12個網路確認是多久
與其說是 6 個區塊,倒不如說是 1 小時(6*10 分鍾),這個值的意義在於,即使算力第一名節點的算力再強,也不可能讓第二名提前 1 小時挖礦,然後自己還能比第二名先挖唯粗出來。
如果支出方想要進行雙重支付,他必須控制了非常大的算力,不然其碧山仿他的挖礦者不會幫助它,因為他們都悔纖需要在最長的分支上工作才能得到獎賞。