eth私鑰多少位
Ⅰ 如何創建和簽署以太坊交易
交易
區塊鏈交易的行為遵循不同的規則集
由於公共區塊鏈分布式和無需許可的性質,任何人都可以簽署交易並將其廣播到網路。
根據區塊鏈的不同,交易者將被收取一定的交易費用,交易費用取決於用戶的需求而不是交易中資產的價值。
區塊鏈交易無需任何中央機構的驗證。僅需使用與其區塊鏈相對應的數字簽名演算法(DSA)使用私鑰對其進行簽名。
一旦一筆交易被簽名,廣播到網路中並被挖掘到網路中成功的區塊中,就無法恢復交易。
以太坊交易的數據結構:交易0.1個ETH
{
'nonce':'0x00', // 十進制:0
'gasLimit': '0x5208', //十進制: 21000
'gasPrice': '0x3b9aca00', //十進制1,000,000,000
'to': '' ,//發送地址
'value': '0x16345785d8a0000',//100000000000000000 ,10^17
'data': '0x', // 空數據的十進製表示
'chainId': 1 // 區塊鏈網路ID
}這些數據與交易內容無關,與交易的執行方式有關,這是由於在以太坊中發送交易中,您必須定義一些其他參數來告訴礦工如何處理您的交易。交易數據結構有2個屬性設計"gas": "gasPrice","gasLimit"。
"gasPrice": 單位為Gwei, 為 1/1000個eth,表示交易費用
"gasLimit": 交易允許使用的最大gas費用。
這2個值通常由錢包提供商自動填寫。
除此之外還需要指定在哪個以太坊網路上執行交易(chainId): 1表示以太坊主網。
在開發時,通常會在本地以及測試網路上進行測試,通過測試網路發放的測試ETH進行交易以避免經濟損失。在測試完成後再進入主網交易。
另外,如果需要提交一些其它數據,可以用"data"和"nonce"作為事務的一部分附加。
A nonce(僅使用1次的數字)是以太坊網路用於跟蹤交易的數值,有助於避免網路中的雙重支出以及重放攻擊。
- const ethers = require('ethers')
- const signer = new ethers.Wallet('錢包地址')
- signer.signTransaction({
- 'nonce':'0x00', // 十進制:0
- 'gasLimit': '0x5208', //十進制: 21000
- 'gasPrice': '0x3b9aca00', //十進制1,000,000,000
- 'to': '' ,//發送地址
- 'value': '0x16345785d8a0000',//100000000000000000 ,10^17
- 'data': '0x', // 空數據的十進製表示
- 'chainId': 1 // 區塊鏈網路ID
- })
- .then(console.log)
以太坊交易結構
以太坊交易簽名
以太坊交易會涉及ECDSA演算法,以Javascript代碼為例,使用流行的ethers.js來調用ECDSA演算法進行交易簽名。
可以使用在線使用程序Composer將已簽名的交易傳遞到以太坊網路。這種做法被稱為」離線簽名「。離線簽名對於諸如狀態通道之類的應用程序特別有用,這些通道是跟蹤兩個帳戶之間余額的智能合約,並且在提交已簽名的交易後就可以轉移資金。離線簽名也是去中心化交易所(DEXes)中的一種常見做法。
也可以使用在線錢包通過以太坊賬戶創建簽名驗證和廣播。
使用Portis,您可以簽署交易以與加油站網路(GSN)進行交互。
鏈喬教育在線旗下學碩創新區塊鏈技術工作站是中國教育部學校規劃建設發展中心開展的「智慧學習工場2020-學碩創新工作站 」唯一獲準的「區塊鏈技術專業」試點工作站。專業站立足為學生提供多樣化成長路徑,推進專業學位研究生產學研結合培養模式改革,構建應用型、復合型人才培養體系。
Ⅱ 2.在以太坊中,為了得到唯一的公鑰,對私鑰應用哪種演算法
在以太坊中,為了得到唯一的公鑰,對私鑰應用演算法:
1、生成一個隨機的私鑰(32位元組)。
2、通過私鑰生成公鑰(64位元組)。
3、通過公鑰得到地址(20位元組)。
Ⅲ 5、以太坊名詞解析
詳解參見: 私鑰、公鑰、地址
以太坊的密鑰與比特幣作用相同[相當於你在工商、招商、建設等銀行設置的密碼]
以太坊將明文 密鑰 通過 [混入用戶自己設置的密碼] 加密演算法生成的一種JSON格式的字元串,並以文件格式存儲,以達到保存密鑰的作用。
一系列的由12、15、18、21等不同數量的單詞構成。
作用跟Keystore相同,就是給腦子不好使的同學們用的
'JSON是啥...' '這一長串的括弧加數字是什麼鬼...' '我輸入了密碼為什麼出來了這些東西... 你們的錢包APP是不是有問題啊 ...'
舉個花生:
大白話時間:
所有交易都包含以下組件:
Ⅳ 幣圈什麼是有效地址
創建ETH錢包後會生成一個以 0x 開頭的 42 位字元串,也就是錢包地址,一個錢包對應一個錢包地址,地址唯一且不能修改,也就是說一個錢包中所有代幣的轉賬收款地址都是一樣的。所以,你會發現基於ETH的代幣收款地址都是一樣的。
由於區塊鏈是去中心化的,所以可以查詢到地址的所有交易記錄。在前文《數據會說話 幣圈的大資金們在想些什麼?》,就是利用了這一特性。這也是比特幣等一些加密貨幣匿名性較弱的原因。
試想一下,在未來你在超市用比特幣刷了一盒牛奶,那麼超市就知道這個地址的擁有者是你了。社工學的黑客也通過一些網路上的信息,把你和你的地址對上了號….當然,這扯遠了。
2.密碼=銀行卡密碼
創建錢包成功後,需要設置一個密碼。一方面時轉賬的時候需要用到,另一方面使用官方提供的文件導入錢包的時候需要輸入密碼。密碼一般可以修改,某些錢包必須提供私鑰才能修改密碼。
但是,雖然我們做了如上的類比。但是擁有了地址以及密碼,並不相當於擁有了銀行卡號和密碼。因為前者仍然不能提走錢,而後者可以。前者如果想提幣,則還需要你的錢包。
3.私鑰=銀行卡+密碼
注冊錢包,都會自動給你生成64字元串組成的私鑰。一個錢包只有一個私鑰且不能修改。在導入錢包中,輸入私鑰並設置一個密碼(不用輸入原密碼),就能進入錢包並擁有這個錢包的掌控權,就可以把錢包中的所有幣都轉移走。
這里會涉及到另一個名詞:助記詞。顧名思義,助記詞主要是方便你記住私鑰,私鑰的字元串沒有規律,而助記詞則有一定的規律。一般,助記詞有用同私鑰的一樣的功能均需妥善保管。
在現實世界中,你的錢包丟了、銀行卡錢被劃走了,還有找回的可能。而由於區塊鏈時去中心化以及匿名性的,你的錢包丟了,私鑰丟了,幾乎不可能找回。
說了這么多,只想強調私鑰的重要性。私鑰一般不要放在雲盤、郵件等雲伺服器,也不要聊天發送,不要存在電腦保存。建議斷網保存。
Ⅳ 什麼是以太幣/以太坊ETH
以太幣(ETH)是以太坊(Ethereum)的一種數字代幣,被視為「比特幣2.0版」,採用與比特幣不同的區塊鏈技術「以太坊」(Ethereum),一個開源的有智能合約成果的民眾區塊鏈平台,由全球成千上萬的計算機構成的共鳴網路。開發者們需要支付以太幣(ETH)來支撐應用的運行。和其他數字貨幣一樣,以太幣可以在交易平台上進行買賣 。
溫馨提示:以上解釋僅供參考,不作任何建議。入市有風險,投資需謹慎。您在做任何投資之前,應確保自己完全明白該產品的投資性質和所涉及的風險,詳細了解和謹慎評估產品後,再自身判斷是否參與交易。
應答時間:2020-12-02,最新業務變化請以平安銀行官網公布為准。
[平安銀行我知道]想要知道更多?快來看「平安銀行我知道」吧~
https://b.pingan.com.cn/paim/iknow/index.html
Ⅵ 管好你的「錢包」
Kiwi(WeChat:Kiwind)
一:什麼是私鑰?助記詞?什麼是明文私鑰?以及什麼是keystore ?
1、私鑰: 隨機生成的,用來解鎖對應(錢包)地址的一串字元。生成一個比特幣地址的同時就會有一個私鑰被生成,嚴格來說是, 先生成私鑰,然後通過私鑰使用加密函數來計算出地址 。作為用戶,我們很少會直接看到私鑰,一般情況下,私鑰是被存儲在錢包文件里,由錢包軟體進行管理。下面就是一個比特幣私鑰:
這是對應私鑰生成的地址:
2、助記詞: 其實是 明文私鑰的另一種表現形式 ,因為私鑰是一個64位的哈希值,非常復雜。所以通過助記詞將其簡化。
3、明文私鑰:未加密的私鑰。這意味著任何人只要拿到你的明文私鑰,就可以控制你的錢包資產。 我們時常會聽說用戶被盜幣了,其實就是私鑰泄露,幣被轉走。有時候我們會把地址比作銀行卡號,私鑰比作銀行卡密碼。所以說保護好自己的私鑰有多重要。
4、keystore : 是 加密過後的私鑰 ,需要用用戶生成這個文件時設置的密碼解開,才能夠進行交易操作。如果你備份了keystore 但是忘記了自設密碼,那麼就尷尬了。所以keystore 的同時,也要記住密碼。
二:如何導入錢包?
以imToken為例:
1、官方錢包導入
2、助記詞導入
3、私鑰導入
注意 :
1、imToken目前無法導出明文私鑰,只能導出助記詞和Keystore,但是可以導入明文私鑰。
2、明文私鑰可以去MyEtherWallet,先將Keystore導入,然後導出明文私鑰。具體操作步驟如下:
(1)登陸 myetherwallet.com
(2)點擊View Wallet Info(查看錢包信息),後選擇Keystore File,在右側的灰色區域上傳Keystore文本信息,注意要.txt格式。
(3)上傳完成,輸入imToken上設置的錢包密碼,點擊Unlock解鎖。
(4)導出明文私鑰(切記安全保存)。
3、使用imToken的ETH錢包時,用Keystore導入錢包時,輸入的是之前的密碼。用助記詞和私鑰導入錢包時,輸入的是新的密碼。所以一旦助記詞被盜,黑客是可以設置新的密碼的!
具體說明請看下這篇來自「烏托邦皮條社」彭皓的文章:
http://mp.weixin.qq.com/s/5uNosRiiqpeTYOVR7i2TrQ
Ⅶ 【區塊鏈課程】3.1—數字錢包的概念、特點
一、 錢包的概念
生活中的傳統錢包相當於一個容器,可用來存放現金,但對於數字貨幣錢包而言,它不是用來儲存數字貨幣的,而是用來儲存和管理(包含私鑰和公鑰) 的管理容器,數字錢包里有地址(類似於你的銀行卡賬號)、私鑰(類似於你銀行卡的密碼)。
私鑰: 用戶使用私鑰進行簽名交易,從而證明擁有該交易的輸出權,其交易信息並不是存儲在該錢包內,而是存儲在區塊鏈中。
公鑰: 用來生成地址,儲存交易,信息由私鑰通過非對稱加密演算法生成。
錢包地址: 是一個以雙字母開頭(代表幣種)的42位16進制哈希值字元串。ETH的地址是以 0x 開頭的 42 位 16 進制哈希值字元串。例如: 如果將錢包比作銀行卡, 那麼錢包地址就是銀行卡號。
三者之間的關系,簡單說就是: 私鑰生成公鑰,公鑰生成地址。 簡而言之,地址就是你的賬戶,銀行卡號,私鑰就是你的賬戶密碼。所以如果別人盜取了你的私鑰,也就絕對擁有你賬戶的擁有權。
二、 錢包的特點
類比銀行卡,私鑰好比我們的銀行卡密碼+銀行卡賬號,而根據公鑰生成的數字貨幣地址,就好比我們的銀行卡賬號,用作交易的轉賬地址。數字貨幣是保存在交易市場的,錢包這張銀行卡保管著我們的地址和密碼信息,讓我們擁有地址上對應的數字貨幣的支配權。
三、錢包之於區塊鏈的價值
加密數字貨幣是一種基於區塊鏈技術的數字貨幣,數字貨幣錢包是專門用來管理這些資產的應用。錢包應用按照密碼學原理創建1個或多個錢包地址,每個錢包地址都對應1個密鑰對:私鑰和公鑰。
公鑰是根據私鑰進行一定的數學運算生成,與私鑰一一對應。公鑰主要是對外交易使用,每次交易都必須使用私鑰對交易記錄進行簽名以證明對相關錢包地址裡面的資產有控制權。
私鑰是唯一能夠證明對於數字資產有控制權的憑證,對於數字資產錢包來說,私鑰是最重要的。私鑰的生成和存儲方式決定了資產安全與否。
所以錢包的目的就是用來保存私鑰的。只要有私鑰,就代表了你擁有了對應的token。
但目前數字貨幣市場上存在著數字管理不便、交易和兌換門檻高、區塊鏈性能不足以及設計不合理、區塊鏈開發成本高、連接現實難、缺乏應用場景等問題。說的簡單點,就是基於不同公鏈開發的token都需要各自的錢包,於是我們的手機就被多種錢包的App占滿。
四、數字錢包的幾大關鍵詞:
1、錢包名:
數字貨幣錢包的錢包名就是你創建錢包時的賬號名或者昵稱,每個錢包地址對應一個賬號名,因為通常數字錢包都可以創建多個錢包地址,為了便於分辨和管理,給每個錢包地址設置一個名字還是很有必要的。
2、密碼:
當你創建數字貨幣錢包賬號的時候,需要設置一個密碼,當你轉賬支付時需要使用這個密碼確認;當你對錢包的私鑰或者keystore進行備份導出時也需要密碼確認;另外,如果你使用keystore導入錢包時也需要密碼確認,而使用私鑰導入時可以重置密碼。
3、助記詞:
當你創建錢包的時候,會要求你記錄一串助記詞,通常是由多個(12,15,18,21位)不規則的英文單詞毫無規律的組成的,相當於你數字錢包的密碼+支付密碼。助記詞在創建錢包的時候會提示你進行保存,請務必保存好,建議用筆記錄在單獨的筆記本上,並保管好你的筆記本。
4、keystore:
keystore是錢包存儲私鑰的一個文件(json),這個文件使用時要用到錢包的密碼。選擇導出或者導入keystore時,都需要輸入密碼,這個密碼是你原來設置的本錢包密碼, 這一點和用私鑰或助記詞導入錢包不一樣,用私鑰或助記詞導入錢包,不需要知道原密碼,可以直接重置密碼。
Ⅷ 【以太坊易錯概念】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