IDO预售代币合约流动性质押挖矿分红开发逻辑丨IDO预售代币合约流动性质押挖矿分红系统开发技术分红及代码部署

简介: # 代币数量,以wei为单位,可以是字符串和int类型 web3.toWei(数值,代币单位) # 为了方便调通代码,我们这里用wei来做单位,正常都是用ether。 # 1 ether = 1 x 10^18wei = 1 x 10^9 Gwei 'value': web3.toWei(amount, 'wei'),

“合约ABI是以太坊生态系统中与合约交互的标准方式,不论是外部客户端与合约的交互还是合约与合约之间的交互。”上述是以太坊官方文档给出的定义,更通俗的理解,包含两方面内容:
ABI是合约接口的说明。
ABI定义与合约进行交互数据编码规则

测试合约前提
1、熟悉项目业务层逻辑
2、开发提供智能合约接口文档
(1)、确认我们要在那个链上测试,让开发提供对应的测试币
(2)、提供测试地址(类似于web2的url)
(3)、提供最新合约地址(这个地址开发每次部署到链上都会变更)
(4)、提供ABI(合约接口的说明)如果开发不给可以在eth区块链浏览器上获得
(5)、我们自己测试钱包的秘钥
智能合约转账(单元脚本)
from web3 import Web3, HTTPProvider
import json, os

rpc = "HTTP合约通讯地址(http url)"
address1 = "个人合约地址"
address2 = "智能合约地址"
test_key = "个人钱包秘钥地址"

连接钱包地址

web3 = Web3(HTTPProvider(rpc))

结果为true表示连接成功

connect = web3.isConnected()
print(connect)

转账

def transfer_eth(amount, gas_price=20, gas_limit=21000):

# 带签名的合约写操作
params = {
    # 发送代币地址
    'from': address1,
    # 接收代币的地址
    'to': address2,

    # 代币数量,以wei为单位,可以是字符串和int类型 web3.toWei(数值,代币单位)
    # 为了方便调通代码,我们这里用wei来做单位,正常都是用ether。
    # 1 ether = 1 x 10^18wei = 1 x 10^9 Gwei
    'value': web3.toWei(amount, 'wei'),

    # 每个在链上可以执行的命令都设置了一个消耗的gas值,例:PUSH操作需要消耗3个gas,一次转账一般要消耗21000 gas,gas使用ether来支付
    # 1 ether = 1 x 10^18wei = 1 x 10^9 Gwei, 无论您执行的命令是成功还是失败,都需要支付计算费用
    # 简易理解:gas_limit 是一次交易中gas的可用上限
    'gas': gas_limit,

    # 通过gasPrice可以节省矿工费用,但也会减慢矿工打包的速度。因为,矿工会优先打包gas price设置高的交易,如果您想加快转账,您可以把gas price设置得更高,这样您就可以插队靠前
    # 一次转账一般要消耗21000 gas,如果你设置的gas Price = 1000000000wei = 1Gwei,则此次转账的交易手续费为:TxFee = 21000 Gwei = 0.000021 ether
    # A账户欲向B账户转账4 ether,则要求A账户至少要有 4 + 0.000021 = 4. 000021 ethrer
    # 简易理解:gasPrice就是你想用多少气费进行交易,为什么设置20,是因为当前市场价20就够了。如果你有钱,想更快也可以设置成25甚至更高
    'gasPrice': web3.toWei(gas_price, 'gwei'),

    # 'nonce': web3.eth.getTransactionCount(主钱包地址),主要标记当前最新的交易号是多少,算是记录在交易队列中的位置
    'nonce': web3.eth.getTransactionCount(address1),
}
# web3.eth.account.signTransaction用账户对交易签名(转账需要的参数,from钱包地址的秘钥)
signed_tx = web3.eth.account.signTransaction(params, private_key=test_key)

# 交易发送并获取交易hash
tx_hash = web3.eth.sendRawTransaction(signed_tx.rawTransaction)
return tx_hash

print("运行转账后的交易hash值:", transfer_eth(100))
编写单元测试脚本
from web3 import Web3, HTTPProvider
import json, os

rpc = "HTTP合约通讯地址(http url)"
address = "智能合约地址"

连接钱包地址

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)

官方文档:创建一个新的契约实例及其在json接口对象中定义的所有方法和事件

官方文档:该web3.eth.Contract对象可以轻松地与以太坊区块链上的智能合约进行交互。

个人理解:创建与合约交互的对象,连接完通讯地址后,我们对这地址签订合同,合同里面有合约地址和接口规范(ABI)

web3.eth.contract(接口文档的合约地址, ABI接口规范)

contract = web3.eth.contract(address=address, abi=abi)

通过合约.功能.调用接口方法(传参数).获取返回值

contract.functions.接口方法名(参数1,参数2,参数3).call()

res = contract.functions.getLastMintInfo(10).call()
print("getLastMintInfo:", res)

获取结果
mint智能合约接口数据(单元脚本)
from web3 import Web3, HTTPProvider
import json, os

rpc = "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)

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)

交易发送并获取交易hash

tx_hash = web3.eth.sendRawTransaction(signed_tx.rawTransaction)
print(tx_hash)

相关文章
|
算法 区块链
Defi+NFT质押流动性挖矿系统开发/LP质押挖矿功能开发解析
Defi+NFT质押流动性挖矿系统开发/LP质押挖矿功能开发解析
|
区块链
Defi代币质押持币生息系统技术开发/源代码/质押挖矿dapp
Defi代币质押持币生息系统技术开发/源代码/质押挖矿dapp
|
存储 安全 区块链
IDO预售代币合约质押项目系统开发方案指南
区块链是一种由多方共同维护,使用密码学保证传输和访问安全,能够实现数据一致存储
|
JavaScript 前端开发 区块链
DAPP代币合约流动性质押分红挖矿系统开发丨技术分析
DAPP代币合约流动性质押分红挖矿系统开发丨技术分析
|
机器学习/深度学习 人工智能 安全
PtahDao/ProTradex/Meta2032流动性质押挖矿分红系统开发(NFT质押挖矿开发)丨成熟及源码
 区块链技术由此可以从多方面为企业赋能:提供可靠的共享数据,在各方之间建立信任;消除数据孤岛,即通过去中心化的,在一个网络中共享并支持获许可方访问的账本将数据集成到一个系统中;为数据赋予高度安全性
|
存储 缓存 算法
流动性质押挖矿分红开发源码版,流动性质押挖矿分红系统开发技术详细及分析
共识模块主要由几个组件组成,世代epoch、提案消息缓存服务msgcache、共识消息处理引擎engine、共识消息验证器verifier、提案消息存储服务forest、投票处理器voter、共识活性服务pacemaker、wal存储wal、节点间共识信息同步服务compensator、各模块相互配合实现maxbft流水线共识算法
|
区块链
defi/lp/nft/dapp代币预售合约流动性质押挖矿开发正式版,defi/lp/nft/dapp代币预售合约流动性质押挖矿系统开发(方案及详细)
 智能合约(Smart contract)是依托计算机在网络空间运行的合约,它以信息化方式传播、验证或执行合同,由计算机读取、执行,具备自助的特点。而区块链的去中心化,数据的防篡改,决定了智能合约更加适合于在区块链上来实现
|
JavaScript 前端开发 UED
LSD赛道流动性挖矿dapp系统开发源代码|LP流动性质押分红模式定制详情
LSD赛道流动性挖矿dapp系统开发源代码|LP流动性质押分红模式定制详情
|
开发工具
defi/nft流动性质押挖矿分红开发正式版,defi/nft流动性质押挖矿分红系统开发(成熟案例及源码)
Liquidity mining usually requires pledge of loan vouchers or LP vouchers. That is to say, instead of pledging the original token to get the reward of liquidity mining, users need to pledge the original token in DeFi first, and then pledge the voucher to the specified contract to get the reward of li
NFT流动性质押挖矿开发功能丨NFT流动性质押挖矿系统开发(开发详细)丨NFT流动性质押挖矿系统源码部署
  Liquidity mining is an incentive mechanism to promote the use of DeFi and a new decentralized token distribution mechanism.Most DeFi applications require users to lock tokens into the contract.The larger the amount of lock-in the contract has,the better financial services can be obtained.Liquidity