首页登陆欢迎您!
首页登陆 > 编程 > python利用web3.py开采以太坊应用dapp的实战教程

python利用web3.py开采以太坊应用dapp的实战教程

时间:2019-12-06

python利用web3.py开荒以太坊应用dapp的实战教程:

'3.6.0 |Anaconda 4.3.0 | (default, Dec 23 2016, 12:22:00) n[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]'

安装包

首先,大家须要设置一些得以实施总计的软件包,以便从私钥生成有效的公家地址。要转变比特币地址,供给转到终端并输入上面施命发号安装比特币:

pip install bitcoin

要生成以太坊地址,你须要经过输入上边发号出令来设置以太坊:

pip install ethereum

本学科详细讲明怎么样运用Python开辟以太坊应用,课程内容即涉及以太坊中的主题概念,举例账户管理、状态与交易、智能合约开采与相互作用、过滤器和事件等,同一时候也详细表达如何利用Python与以太坊实行相互影响,是Python程序猿学习以太坊应用开拓的不二取舍 。

思索条件

为以太坊设置Python RPC客商端,输入:

jitsejan@jjvps:~$ pip install ethereum-rpc-client

输入:

jitsejan@jjvps:~$ geth --networkid 23 --nodiscover --maxpeers 0 --port 30333 --rpc

输入:

!geth account list

输出:

Account #0: {8cf9deda0712f2291fb16739f8759e4a0a575854} keystore:///home/jitsejan/.ethereum/keystore/UTC--2017-05-01T14-58-43.532247863Z--8cf9deda0712f2291fb16739f8759e4a0a575854

输入:

from eth_rpc_client import Clientclient = Client(host="127.0.0.1", port="8545")

输入:

import pdirpdir

输出:

abstract class: __subclasshook__attribute access: __delattr__, __dir__, __getattribute__, __setattr__class customization: __init_subclass__object customization: __format__, __hash__, __init__, __new__, __repr__, __sizeof__, __str__other: _coinbase_cache, _coinbase_cache_til, _nonce, async_timeout, host, is_async, port, request_queue, request_thread, results, sessionpickle: __reduce__, __reduce_ex__rich comparison: __eq__, __ge__, __gt__, __le__, __lt__, __ne__special attribute: __class__, __dict__, __doc__, __module__, __weakref__descriptor: default_from_address: @property with getter, Cache the coinbase address so that we don't make two requests for everyfunction: _make_request: call: https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_call construct_json_request: get_accounts: https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_accounts get_balance: https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getbalance get_block_by_hash: https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getblockbyhash get_block_by_number: https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getblockbynumber get_block_number: https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_blocknumber<F37> get_code: https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getcode get_coinbase: https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_coinbase get_filter_changes: https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getfilterchanges get_filter_logs: https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getfilterlogs get_gas_price: https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gasprice get_logs: https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getlogs get_max_gas: get_nonce: get_transaction_by_hash: https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gettransactionbyhash get_transaction_receipt: https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gettransactionreceipt make_request: new_block_filter: https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_newblockfilter new_filter: https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_newfilter new_pending_transaction_filter: https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_newpendingtransactionfilter process_requests: Loop that runs in a thread to process requests synchronously. send_transaction: https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sendtransaction uninstall_filter: https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_uninstallfilter wait_for_block: wait_for_transaction: 

输入:

address = client.get_coinbase()address

输出:

0x8cf9deda0712f2291fb16739f8759e4a0a575854

输入:

client.get_balance

输出:

135000419895999999940

输入:

address_vps_one = "0xc257beaea430afb3a09640ce7f020c906331f805"address_vps_two = "0xe86ee31b7d32b743907fa7438c422a1803717deb"client.get_balance(address_vps_one)client.get_balance(address_vps_two)

输出:

699916006000000000083000420044000000060

编纂代码

代码特别轻巧,你只必要创建三个不断转换地址的while循环,并依照你的目的短语举办反省。那是比特币地址的代码:

from bitcoin import *target = input('Input Target Phrasen>')priv = random_key()addr = pubtoaddr(privtopubwhile not addr.lower().startswith('1{}'.format: priv = random_key() addr = pubtoaddr(privtopubprint('Address: {}nPrivate Key: {}'.format(addr, priv))

以太坊不怎么不相同,因为它并未放置的任意密钥生成器,所以你必得导入os来扭转随机数并应用SHA3来哈希它们以生成私钥。

此外,请留神,以太坊地点是十五进制的,只使用了字符a-f和0-9,因而你能够变动的地址类型受到限定。假设输入的靶子不是十一进制,它将最为循环,因为它世代不会转移满含非十一进制字符的地址。

from ethereum import utilsimport ostarget = input('Input Target Phrasen>')priv = utils.sha3(os.urandomaddr = utils.checksum_encode(utils.privtoaddrwhile not addr.lower().startswith('0x{}'.format: priv = utils.sha3(os.urandom addr = utils.checksum_encode(utils.privtoaddrprint('Address: {}nPrivate Key: {}'.format(addr, priv.hex

自家期望您对这么些有点野趣!此外,请小心目的短语中的每一种附加字符都会以指数方式充实浮动难度,因而请勿过长。

======================================================================

享受部分以太坊、EOS、比特币等区块链相关的人机联作式在线编制程序实战教程:

python以太坊,首借使针对python程序猿使用web3.py进行区块链以太坊支出的详细明白。

  • java以太坊支付教程,首假若指向java和android工程师举办区块链以太坊支出的web3j详细明白。
  • php以太坊,首如果介绍使用php实行智能合约开采人机联作,实行账号创制、交易、转账、代币开辟以至过滤器和贸易等内容。
  • 以太坊入门教程,首要介绍智能合约与dapp应用开采,相符入门。
  • 以太坊开辟进级教程,首倘若介绍使用node.js、mongodb、区块链、ipfs实现去主旨化电子商务DApp实战,切合进级。
  • C#以太坊,重要教学如何使用C#开垦基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开采与互相、过滤器和贸易等。
  • EOS教程,本学科帮忙您火速入门EOS区块链去大旨化应用的付出,内容蕴含EOS工具链、账户与卡包、发行代币、智能合约开辟与构造、使用代码与智能合约交互作用等宗旨知识点,最终汇总选取各知识点完毕三个便签DApp的支付。
  • java比特币开荒教程,本学科面向初读书人,内容即包含比特币的着力概念,比如区块链存储、去中央化共鸣机制、密钥与剧本、交易与UTXO等,同期也详细讲明怎样在Java代码中集成比特币援助效能,比如创造地址、管理钱包、布局裸交易等,是Java技术员天之骄子的比特币开荒学习课程。
  • php比特币开荒教程,本学科面向初读书人,内容即含有比特币的核心概念,比方区块链存款和储蓄、去主旨化共鸣机制、密钥与剧本、交易与UTXO等,相同的时间也详细批注怎么着在Php代码中集成比特币补助成效,比如创设地址、管理钱包、构造裸交易等,是Php技术员高人一等的比特币开拓学习课程。

汇智网原创翻译,转发请标记出处。这里是原版的书文如何用Python为以太坊和比特币生成设想地址

python以太坊

实施二个开采步骤

实行矿工以表达交易。

输入:

prev_balance_sen = client.get_balance(sending_address)prev_balance_rec = client.get_balance(receiving_address)

result = !geth --exec "miner.start();admin.sleepBlocks;miner.stop();" attachif result[0] != 'true': print('Fail: %s' % result[0])else: print("Mining finished!")

出口挖矿达成:

Mining finished!

输入:

print("Received %d"% (client.get_balance(receiving_address)-prev_balance_rec))

出口收到金额:

Received 12000000000

率先检查余额的差异,输入:

print("Difference of the sender %d"% (client.get_balance(sending_address)-prev_balance_sen))

输出:

Difference of the sender 4999999988000000000

对于采矿来讲,矿工将获得采矿奖金。

输入:

mining_bonus = 5000000000000000000

要博取以太网发送的数据,大家须要减去采矿奖金。

输入:

print("Amount difference: %d" % int(client.get_balance(sending_address)-prev_balance_sen - mining_bonus))

输出金额差异:

Amount difference: -12000000000

======================================================================

享受部分以太坊、EOS、比特币等区块链相关的交互作用式在线编制程序实战教程:

  • python以太坊,首借使本着python程序员使用web3.py进行区块链以太坊开垦的详明。
  • java以太坊付出教程,主若是照准java和android程序员进行区块链以太坊开荒的web3j精解。
  • php以太坊,首假如介绍使用php进行智能合约开拓人机联作,进行账号创设、交易、转账、代币开辟以致过滤器和贸易等内容。
  • 以太坊入门教程,主要介绍智能合约与dapp应用开拓,切合入门。
  • 以太坊支出进级教程,首若是介绍使用node.js、mongodb、区块链、ipfs达成去中央化电子商务DApp实战,切合进级。
  • C#以太坊,主要疏解如何使用C#支出基于.Net的以太坊应用,包涵账户处理、状态与交易、智能合约开荒与相互、过滤器和贸易等。
  • EOS教程,本课程支持您快捷入门EOS区块链去宗旨化应用的付出,内容饱含EOS工具链、账户与钱袋、发行代币、智能合约开采与安顿、使用代码与智能合约交互作用等大旨知识点,最终总结应用各知识点实现三个便签DApp的支付。
  • java比特币开垦教程,本学科面向初读书人,内容即饱含比特币的主导概念,譬如区块链存款和储蓄、去中央化共鸣机制、密钥与剧本、交易与UTXO等,同时也详细讲明怎么样在Java代码中集成比特币支持功效,例如成立地址、管理钱袋、布局裸交易等,是Java程序猿超群绝伦的比特币开荒学习课程。
  • php比特币开辟教程,本学科面向初读书人,内容即含有比特币的基本概念,例如区块链存款和储蓄、去中央化共鸣机制、密钥与剧本、交易与UTXO等,同期也详细疏解怎么样在Php代码中集成比特币帮助效率,举个例子创设地址、管理钱袋、构造裸交易等,是Php工程师卓乎不群的比特币开荒学习课程。
  • tendermint区块链开垦详细解释,本课程切合希望利用tendermint举办区块链开采的技术员,课程内容即包涵tendermint应用开辟模型中的宗旨概念,比方ABCI接口、默克尔(Merkel卡塔尔树、多版本状态库等,也席卷代币发行等丰硕的实际操作代码,是go语言技术员快捷入门区块链开垦的精品选项。

汇智网原创翻译,转发请标注出处。这里是原来的文章在Python中动用以太坊RPC客户端

明日,大家将编制三个非常不难的python脚本来生成虚荣地址,那一个地址是以有些短语或字母体系开首的加密钱币地址。该进度涉及生成私钥并检讨对象短语的地点,直到找到如意的地点。

上一篇:如何职位晋升?他的经历令人深思 下一篇:没有了