面向python的erc20令牌sdk

erc20token-python的Python项目详细描述



erc20令牌python sdk
[![构建状态](https://travis ci.org/kinfoundation/erc20token sdk python.svg)(https://travis-ci.org/kinfoundation/erc20token-sdk-python)[![覆盖状态](https://codecov.io/gh/kinfoundation/erc20token-sdk-python/branch/master/graph/badge.svg?token=dovvv9k8ofe)(https://codecov.io/gh/kinfoundation/erc20token-sdk-python)


免责声明

sdk仍处于测试阶段。不提供任何保证,自行决定使用。

n标准环境](https://cloud.google.com/appengine/docs/standard/)在安全沙盒环境中使用预加载的python解释器执行python
应用程序代码。解释器不能用c代码加载python服务;它是一个"纯"python环境。但是,所需的
[web3包](https://pypi.python.org/pypi/web3/)需要本机实现的其他包,即
[pysha3](https://pypi.python.org/pypi/pysha3)和[cytoolz](https://pypi.python.org/pypi/cytoolz)。
为了克服这一限制,请执行以下操作G:<BR/> 1。用[附加的sha3.py](sha3.py.alt)替换pysha3安装的"sha3.py"。
2。将已安装的"cytoolz"包替换为"toolz"包。


初始化

您的令牌合同的ABI为JSON
(可选)您的私钥,或密钥文件+密码
(可选)在gwei
-中的天然气价格(可选)您的交易的固定天然气限额

**注**:如果您不提供私钥或密钥文件,您将无法使用以下函数:
"获取地址"、"获取乙醚平衡"、"获取令牌平衡"、"发送乙醚"、"发送令牌"。


``python
"导入erc20token
"导入json

"无私钥初始化sdk(用于一般区块链查询)
"令牌sdk=erc20token.sdk(提供程序端点t_uri='http://localhost:8545',
合同地址='0x04f72aa40046c5fb3b143aaba3ab64d1a82410a7',
合同abi=json.loads(合同abi))


8545',
私有密钥='a60baaa34ed125af0570a3df7d4cd3e80dd5dc5070680573f8de0ecfc1957575',
合同地址='0x04f72aa40046c5fb3b143aaba3ab64d1a82410a7',
合同abi=json.loads(合同abi))

keyfile
首先,从我的私钥创建keyfile
erc20token.create\u keyfile('a60baaa34ed125af0570a3df7d4cd3e80dd5dc5070680573f8de0ecfc1957575',
'my password','keyfile.json')
point_uri='http://localhost:8545',
keyfile='keyfile.json',password='my password',
contract_address='0x04f72aa40046c5fb3b143aaba3ab64d1a82410a7',
contract_abi=json.loads(contract_abi))

gas参数
token_sdk=erc20token.sdk(provider_endpoint_uri='http://localhost:8545',
private_key='a60baaa34ed125af0570a3df7d4cd3e80dd5dc5070680573f8de0ecfcfc1957575',
合同地址=0x04f72aa40046c5fb3b143aaba3ab64d1a82410a7',
合同abi=json.loads(合同abi),
燃气价格=10,燃气限额=50000)
``````
有关更多示例,请参阅[sdk测试文件](test/test-sdk.py)。该文件还包含用于使用testrpc和ropsten测试
的预定义值。



\地址是从初始化sdk时使用的私钥派生的。
address=token-sdk.get掴address()
`````

alance
`` python
("address")

金额以醚为单位。
tx_id=token_sdk.send_ether('address',10)

金额以令牌为单位。
tx-id=token-sdk.send-tokens('address',10)
`````
如果乙醚不足,"send-ether"将引发异常。
但是,如果令牌不足,"send-tokens"将成功完成。交易将在区块链上以
失败告终,消耗您所有的汽油。

#erc20token.transactionstatus.pending=1
erc20token.transactionstatus.success=2
erc20token.transactionstatus.fail=3

欠字段:
发件人地址-此事务从
发送到的地址-此事务发送到的地址。对于令牌事务,这是解码的收件人地址。
ether_u amount-传输的ether的数量。0表示代币交易。
代币金额-已转移的代币数量。0表示ether事务。
status-事务状态,请参见上文。
num_confirmations-此事务的确认数:
-1表示找不到事务
0表示事务处于挂起状态事务监视

为监视函数提供
回调,在事务状态更改时调用。
注意:可以多次接收挂起状态,这表示事务更改块。

`` python
状态,从地址,到地址,数量:
tx_状态[tx_id]=状态

#很快,事务进入挂起队列
等待范围(0,5000):
如果tx_状态为[tx_id]>;erc20token.transactionstatus.unknown:
中断
睡眠(0.001)
断言tx_状态[tx_id]>;=erc20token.transactionstatus.pending

事务已确认
等待范围(0,90):
如果tx_状态为[tx_id]>;erc20token.transactionstatus.pending:
中断
睡眠(1)
断言tx_状态[tx_id]==erc20token.transactionstatus.success
````

**注意**:如果使用的是公共以太坊节点(例如http://mainnet.infura.io),则它将可能已经禁用了一些[json-rpc api](https://github.com/ethereum/wiki/wiki/json-rpc)以防止滥用。通常,它意味着与过滤器相关的调用被阻塞,因此sdk函数"monitor_ether_transactions"和"monitor_token_transactions"将不起作用。作为解决方法,您可以使用
函数"get_transaction_status"或"get_transaction_data"创建自己的事务监视器。


-rpc)
以太坊节点的实现工作正常:专门处理过滤器和挂起的事务。由于ethereum节点的动态开发状态非常
,对这些功能的支持还不是很稳固,而且从
供应商到供应商,从不同版本到不同版本都有所不同。经过一些实验,我们确定了
[奇偶校验以太坊节点](https://www.parity.io/),版本**v1.8.3-beta**。

如果在负载平衡器后面运行多个以太坊节点,则应启用
[连接粘性](https://stackoverflow.com/questions/10494431/sticky-and-non-sticky-sessions)在
负载均衡器上:sdk在它使用的节点上保持一个状态(运行过滤器),stickiness确保
请求将到达同一节点。此外,将事务发送到一个节点不会使它在
另一个节点上立即可见,因此粘性确保了在节点上轮询时事务状态的一致性。

transactions和
"monitor_token_transactions",因为它们启动了一个线程,而gae标准应用程序无法生成线程。

\sdk限制

1。sdk只支持18位小数的令牌,这是最常见的小数位数。当使用不同小数位数的标记
时,需要进行自己的转换。
2.sdk只支持[erc20令牌标准](https://theeesoem.wiki/w/index.php/erc20令牌标准)的有限子集,即"totalsupply"、"transfer"和"balanceof"函数。将根据需要添加其他功能。
欢迎您的个人简历!
3。当前仅在Python2.7中支持使用keyfile和password初始化sdk。


\roadmap

-如果未提供契约abi,则使用默认的erc20 abi。
-使用[web3.py v.4](https://github.com/ethereum/web3.py)。当前使用的是v.3.16.x。
-删除GPL包后将许可证更改为MIT。
-根据需要添加其余的ERC2 0方法。
-添加对[ERC223"传输"方法的支持(https://github.com/ethereum/eips/issues/223)。
-支持各种代币"小数"。
-检索合同AB我使用[etherscan contract api](https://etherscan.io/api contracts)。
-使用[coinmarketcap api](https://coinmarketcap.com/api/)获取当前的美元/btc/eth价格。


的未来,我们将努力使用限制较少的许可证。






欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java GridBagLayout不填充区域   java Memozied Fibonacci未运行与常规Fibonacci解决方案   Java Web启动未启动问题   Java中异常和if-then的区别   java从命令提示符运行批处理文件获取错误   socket在Java中验证SSL证书的公共名称   如何在JAVA中检查字符串数组中的相等字   用java语言将音频文件转换成文本文件的语音识别   java为什么foo(1,2,3)没有传递给varargs方法foo(对象…)作为整数[]   java通过蓝牙将奇怪的数据从Arduino传输到Android   java ContainerRequestFilter获取空entitystream   java如何从安卓 studio中删除不兼容类型错误   基本Java错误   在Spring引导中使用REST API时发生java错误   javascript通过从SQL查询派生的URL打开页面