揭開區塊鏈錢包的神秘面紗

買賣虛擬貨幣
根據韋氏詞典,錢包的定義是“旅行中攜帶各種物品的袋子”。當我們使用與區塊鏈相關的概念時,我們會使用我們對錢包的預想意義,即攜帶加密貨幣。比特幣向我們大多數人介紹了。除了那些有學識的人,我們都總認為區塊鏈和比特幣是同義詞。我們不區分這兩者。但是,比特幣只是區塊鏈技術的應用之一。當我冒險進入加密貨幣世界時,使用了一系列概念都很混亂的術語。其中一個詞就是“錢包”。從我年輕的時候起,我就對錢包情有獨鍾。我們大多數人都認為這是一種時尚宣言。所以,當區塊鏈錢包被介紹給我的時候,我所想到的就是為了在加密貨幣世界裡酷一點,我應該擁有一個很酷的錢包。僅此而已。區塊鏈錢包不是儲存加密貨幣的物件,因此您可以隨身攜帶它。這就是我所想的,因為它與“錢包”在世俗意義上是直接相關的,也就是說,在錢包裡,代幣是存在的。我的印象是,如果我想在加密貨幣世界裡買任何東西,我需要從錢包裡拿出代幣然後花掉它。但事實遠非我所想。讓我向你們介紹一些概念。Ethereum和Bitcoin基於區塊鏈技術。我將使用Ethereum區塊鏈來解釋這些概念,因為我們大多數人都在交易ERC20代幣,並且以太坊掃描的有超過10萬個令牌正在流通中——https://etherscan.io/token
私鑰、公鑰和錢包密碼學包含兩種型別——對稱和非對稱。在對稱密碼體制中,相同的金鑰用於加密和解密資料,而在非對稱密碼體制中,不同的金鑰用於不同的加密和解密。讓我詳細解釋一下。對稱加密技術

讓我們假設Bob和Alice希望彼此交換訊息。他們想要分享一些需要在網際網路上交換的資訊。他們害怕這些資訊會被網際網路上的其他人修改。因此,他們在資訊交換之前就決定在他們之間共享一個金鑰。現在,Bob使用金鑰加密訊息並將密文傳遞給Alice。在這個場景中,Bob並不擔心在網際網路上交換這個密文,因為即使有人修改了密文,Alice也會知道訊息被篡改了,可以請求Bob再次傳送密文。只有在金鑰的幫助下,Alice才能將密文解密成Bob傳送的訊息。這是密碼世界裡的老技術了。一些最著名的加密術是Blowfish、AES、RC4、DES、RC5和RC6。廣泛使用的對稱演算法有AES-128、AES-192和AES-256。

非稱加密技術

在相同的場景中,Bob使用Alice共享的公鑰加密訊息並在網際網路上將密文傳送給Alice。Alice使用私鑰將密文解密。現在,如果對密文有任何篡改,Alice可以很容易地用這種加密方法檢測到。這是當今世界最常用的加密機制。廣泛應用的非對稱加密術有RSA、DSA、橢圓曲線密碼學。

因為區塊鏈是一個加密鏈,所以我們在任何地方都可以使用非對稱加密技術來滿足所有的密碼需求。

這個私鑰和公鑰是什麼?私鑰是隨機數字的一個組合。這可以是不同種類的。我們在區塊鏈中使用十六進位制值來建立私鑰。您可以發現,鍵序列將包含從0到9的字元和從a到f的字元,它們將使用不同的隨機數生成器生成。

基於這個私鑰,使用特定的加密演算法生成一個公鑰。公鑰是私鑰的雜湊函式。雜湊函式用於建立一個固定長度的值。這個函式的作用是,它作為輸入字元的不確定長度,並總是產生固定長度的值,這被稱為“摘要”。

下面是生成私鑰、公鑰和錢包地址的python程式碼

import os
import ecdsa
import hashlib
import base58
import codecs
from Crypto.Hash import keccak
#Create Ethereum Private key
private_key = os.urandom(32).encode(“hex”)
print(“Private key: “ + private_key)
# Create Ethereum Public Key
privatekey_bytes = codecs.decode(private_key, ‘hex’)
# Get ECDSA public key
key = ecdsa.SigningKey.from_string(privatekey_bytes, curve=ecdsa.SECP256k1).verifying_key
key_bytes = key.to_string()
ethereum_public_key = codecs.encode(key_bytes, ‘hex’)
print(“Ethereum Public Key “ + ethereum_public_key)
# Create Ethereum Wallet Address
public_key_bytes = codecs.decode(ethereum_public_key, ‘hex’)
print(“Public Key Bytes “ + public_key_bytes)
keccak_hash = keccak.new(digest_bits=256)
keccak_hash.update(public_key_bytes)
keccak_digest = keccak_hash.hexdigest()
print(“Keccak Digest Value “ + keccak_digest)
# Take last 20 bytes — Standard Ethereum Address Format
wallet_length = 40
wallet = ‘0x’ + keccak_digest[-wallet_length:]
print(“Ethereum Wallet Address “ + wallet)
公開金鑰->地址keccak是什麼?網址:https://keccak.team/keccak。Keccak是一個通用的密碼函式。它最著名的是雜湊函式,不過它也可以用於身份驗證、(經過身份驗證的)加密由偽隨機數生成。其結構是極其簡單的海綿結構,內部使用創新的Keccak-f密碼排列。
正如我之前解釋的那樣,雜湊函式需要無限個字元,併產生256位輸出。同時,8位= 1位元組256位將產生32位元組的資料。地址建立過程解釋如下:

· 從公鑰開始(128個字元/ 64個位元組)
· 以公鑰的Keccak-256雜湊值為例。現在應該有一個64字元/ 32位元組的字串。
· 取這個公鑰(Keccak-256)的最後40個字元/ 20個位元組。或者,換句話說,刪除前24個字元/ 12個位元組。這40個字元/ 20個位元組就是地址。當字首為0x時,它變成42個字元長。

因此,錢包被建立。用這個錢包我們可以在網上交易。從上面的解釋可以看出,錢包不是我們存放代幣的地方。它本質上是一個公鑰,在使用者之間共享以進行交易。請記住,我們應該更加重視安全地建立私鑰。因為一切都基於私鑰。

私鑰->公鑰->錢包建立

建立私鑰、公鑰和錢包的整個過程都應該非常安全,以確保駭客不會染指我們的錢包;-)。

如果你覺得我錯過了什麼,一定要指出來。因為這是我第一次寫區塊鏈,我可能做了錯誤一些假設,所以我希望你能幫助我改正自己。謝謝。

更多區塊鏈資訊:www.qukuaiwang.com.cn/news

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;