gpt4 book ai didi

python - 如何使用geth在钱包之间转移代币

转载 作者:太空宇宙 更新时间:2023-11-04 02:40:19 25 4
gpt4 key购买 nike

过去几天我一直在努力尝试在 2 个以太坊钱包之间转移自定义代币。

我正在使用 populus (python),进行 ETH 转账似乎很容易,但我不明白如何使用自定义 token 进行同样的操作。

这是我的 python 代码:

from decimal import Decimal
import populus
from populus.utils.accounts import is_account_locked
from populus.utils.cli import request_account_unlock
from eth_utils import from_wei
from ico.utils import check_succesful_tx

# Which network we deployed our contract
chain_name = "horton"

# Owner account on geth
owner_address = "0xaeCb8415d5553F080d351e82b2000f123BFBc23C"

# Where did we deploy our token
contract_address = "0x15f173b7aca7cd4a01d5f8360e65fb4491d270c1"

receiver = "0x4c042bf285689891117AED16005004a6de2cC4FB"

amount = Decimal("1.0")

project = populus.Project()

with project.get_chain(chain_name) as chain:

web3 = chain.web3
print("Web3 provider is", web3.currentProvider)
print("Owner address is", owner_address)
print("Owner balance is", from_wei(web3.eth.getBalance(owner_address), "ether"), "ETH")

# Goes through geth account unlock process if needed
if is_account_locked(web3, owner_address):
request_account_unlock(chain, owner_address, None)

transaction = {"from": owner_address}
FractionalERC20 = chain.contract_factories.FractionalERC20

token = FractionalERC20(address=contract_address)
decimals = token.call().decimals()
decimal_multiplier = 10 ** decimals

decimals = 18
decimal_multiplier = 10 ** decimals
print("Token has", decimals, "decimals")
print("Owner token balance is", token.call().balanceOf(owner_address) / decimal_multiplier)

# Use lowest denominator amount
normalized_amount = int(amount * decimal_multiplier)

# Transfer the tokens
txid = token.transact({"from": owner_address}).transfer(receiver, normalized_amount)
print("TXID is", txid)
check_succesful_tx(web3, txid)

但是我在执行上面的代码时遇到错误:

File "ICO_transfering_tokens.py", line 39, in <module>
FractionalERC20 = chain.contract_factories.FractionalERC20
AttributeError: 'LocalGethChain' object has no attribute 'contract_factories'

我了解错误,但不知道如何解决。

最佳答案

显然你已经从 ICO project 复制了这段代码.为了让用户更容易回答,告诉你从哪里获得源代码是有意义的。 This project has its own chat group here .

出现异常的原因是,在 Populous 的某些版本中,API 已更改,您使用的示例是针对旧版本的 API。请将 ICO 存储库和 Populous 升级到最新的兼容版本配置,您可以找到 in ICO repo Travis output .

请替换这一行:

FractionalERC20 = chain.contract_factories.FractionalERC20

有了这个:

from ico.utils import get_contract_by_name

FractionalERC20 = = get_contract_by_name(chain, "FractionalERC20")

关于python - 如何使用geth在钱包之间转移代币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46745305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com