<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                一.基礎概念 (1)賬戶(Accounts): 在以太坊中,有兩種類型的賬戶:一種是外部賬戶(EOAs,Externally Owned Accounts),另一種是合約賬戶(Contracts Accounts)。當我們提到賬戶這個術語的時候,我們通常指的是外部賬戶(EOA),當提到合約賬戶的時候我們通常稱其為“合約”。 (2)以太坊地址(Address): 一個以太坊地址就代表著一個以太坊賬戶,地址是賬戶的標識。對于外部賬戶來說,地址表示的是該賬戶公鑰的后20字節(通常會以0x開頭,例如,`0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826`,該地址使用的是16進制表示法。上述示例中的地址中的字母全部是小寫。在EIP55中引入了一種大小寫混用的地址表示方法,通過這種表示方法進行表示的地址隱含了一個校驗和(checksum)能夠驗證該地址的有效性 (3) 私鑰和公鑰 每個賬戶都由一對鑰匙定義,一個私鑰(Private Key)和一個公鑰(Public Key)。 賬戶以地址為索引,地址由公鑰衍生而來,取公鑰的最后20個字節。每對私鑰/地址都編碼在一個鑰匙文件里。該文件是JSON格式的。以太坊的私鑰是一串64位16進制字符,如果丟失了私鑰也就意味著你的賬戶丟失了。 (4)查看一個Keystore文件 ~~~ { "address":"358f94366124d9f2817b09c84921d2a653f5ac0c", "crypto":{ "cipher":"aes-128-ctr", "ciphertext":"41c14f88ec8f35c9fe57cd39121a76c2dadbd82ea8fec59866468bc0d7371f2e", "cipherparams":{ "iv":"43443bf394e8f6ebcc687e13bc0effb9" }, "kdf":"scrypt", "kdfparams":{ "dklen":32, "n":262144, "p":1, "r":8, "salt":"aaef6847d09cb1e9f5ceadaf5865d96a7493df1cae146b24e31092cc0a7844af" }, "mac":"5e9781c587db5795c6d41cb4f001bf086cc3db33b6e7eefcc2ef472145e76821" }, "id":"bcd61a88-283f-4d81-8457-30ec9c11521f", "version":3 } ~~~ 通過keystore文件中的內容,我們可以看到其中包括了私鑰加密的相關信息: - address:該賬戶的地址 - cipher:加密方法使用的是AES-128-CTR算法[4](https://blog.csdn.net/luoyhang003/article/details/79970254#fn:4 "See footnote") - ciphertext:加密后的密文 - cipherparams:AES-128-CTR算法加密所需的相關參數 - kdf:秘鑰生成函數,用于使用密碼對keystore文件進行加密 - kdfparams:kdf算法所需的參數 - mac:用于驗證密碼的編碼 (5) 私鑰、公鑰和地址是生成順序 **以太坊使用Secp256k1橢圓曲線得到私鑰** ![](https://img.kancloud.cn/c8/42/c8428bbbff7bf54470cea4463343cfbb_928x605.png) (6)python代碼生成公鑰,私鑰,地址 1)第一種 ~~~ from eth_keys import keys from eth_utils import decode_hex decode_hex(私鑰) priv_key_bytes = decode_hex('0x44b9abf2708d9adeb1722dcc1e61bef14e5611dee710d66f106e356a111bef90') priv_key = keys.PrivateKey(priv_key_bytes) pub_key = priv_key.public_key ~~~ 2)第二種 ~~~ from eth_keys import keys # 先創建keys模塊下的私鑰對象 #self.privatekey為私鑰 priv_key = keys.PrivateKey(self.privatekey) print("priv_key:",priv_key) # 再解出公鑰 self.public_key = priv_key.public_key print("公鑰:",self.public_key) # 這里的公鑰是64字節,是壓縮的 print("公鑰長度:",len(str(self.public_key))) # 使用web3.py自帶的keccak實現從公鑰中得出地址 sha3_pub_key = Web3.keccak(hexstr=str(self.public_key)) print("sha3_pub_key",sha3_pub_key) # 取后20個字節 print('從公鑰生成地址:',Web3.toHex(sha3_pub_key[-20:])) ~~~ 3)第三種 ~~~ import binascii import sha3 from ecdsa import SigningKey, SECP256k1 priv = SigningKey.generate(curve=SECP256k1) # 生成私鑰 pub = priv.get_verifying_key() # 生成公鑰 keccak = sha3.keccak_256() keccak.update(pub.to_string()) # keccak_256哈希運算 address = "0x" + keccak.hexdigest()[24:] priv_key = binascii.hexlify(priv.to_string()) pub_key = binascii.hexlify(pub.to_string()) print("Private key: " + priv_key.decode()) print("Public key: " + pub_key.decode()) print("Address: " + address) ~~~ (7)助記詞 助記詞和種子不是同一個概念,但并非如此,一個叫mnemonic(助記符或助記詞),一個叫seed(種子) ~~~ seed = wallet.generate_mnemonic() ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看