DAPP 以太链 / 波场链 / 币安链代币合约流动性质押挖矿分红系统开发(开发详情及源码逻辑)
本质上来说,智能合约是一段程序,它以计算机指令的方式实现了传统合约的自动化处理。智能合约程序不只是一个可以自动执行的计算机程序,它本身就是一个系统参与者,对接收到的信息进行回应,可以接收和储存价值,也可以向外发送信息和价值。这个程序就像一个可以被信任的人,可以临时保管资产,总是按照事先的规则执行操作。简单讲,智能合约就是双方在区块链资产上交易时,触发执行的一段代码,这段代码就是智能合约。提前规定好合约的内容,当在满足触发合约条件的时候,程序就会自动执行合约内容。“合约 ABI 是以太坊生态系统中与合约交互的标准方式,不论是外部客户端与合约的交互还是合约与合约之间的交互。”上述是以太坊官方文档给出的定义,更通俗的理解,包含两方面内容:DAPP 代币合约系统合约接口的说明。ABI 定义与合约进行交互数据编码规则测试合约前提 1、熟悉项目业务层逻辑 2、开发提供智能合约接口文档(1)、确认我们要在那个链上测试,让开发提供对应的测试币(2)、提供测试地址(类似于 web2 的 url)(3)、提供最新合约地址(这个地址开发每次部署到链上都会变更)(4)、提供 ABI(合约接口的说明)如果开发不给可以在 eth 区块链浏览器上获得(5)、我们自己测试钱包的秘钥智能合约转账(单元脚本)from web3 import Web3, HTTPProviderimport json, osrpc = HTTP 合约通讯地址(http url)address1 = 个人合约地址 address2 = 智能合约地址 test_key = 个人钱包秘钥地址 mint 智能合约接口数据(单元脚本)from web3 import Web3, HTTPProviderimport json, osrpc = HTTP 合约通讯地址(http url)address1 = 个人合约地址 address2 = 智能合约地址 test_key = 个人钱包秘钥地址 # 连接钱包地址 web3 = Web3(HTTPProvider(rpc))# 结果为 true 表示连接成功 connect = web3.isConnected()print(connect)# 获取 ABI 存放地址 filePath = os.path.dirname(file) +;/abi.json# 这里是读取咱们的 abi 合约接口规范,方便后面使用 with open(filePath,;r) as f: abi = json.load(f)# 个人理解:创建与合约交互的对象,连接完通讯地址后,我们对这地址签订合同,合同里面有合约地址和接口规范(ABI)智能合约开发威 MrsFu123# web3.eth.contract(接口文档的合约地址, ABI 接口规范)contract = web3.eth.contract(address=address2, abi=abi)# 通过合约功能.调用接口方法(传递 mint 方法的入参).创建交易参数({key:value})transaction = contract.functions.mint(1).buildTransaction({ ;gas: 70000, # 最大气费上限 ;gasPrice: web3.toWei(20,;gwei), # 气费 ;from: address1, # 接受地址 ;value: web3.toWei(0.01,;ether), # mint 多少 eth ;nonce: web3.eth.getTransactionCount(address1), # 当前第几个交易})# web3.eth.account.signTransaction 用账户对交易签名(转账需要的参数,from 钱包地址的秘钥)signed_tx = web3.eth.account.signTransaction(transaction, private_key=test_key)# 交易发送并获取交易 hashtx_hash = web3.eth.sendRawTransaction(signed_tx.rawTransaction)print(tx_hash)
版权声明: 本文为 InfoQ 作者【V\TG【ch3nguang】】的原创文章。
原文链接:【http://xie.infoq.cn/article/a70242afdac8562b5487208a5】。文章转载请联系作者。
评论