web3py第一课:web3合约交互基础部分
这一篇是正式建立DFarm DAO以来的第一篇文章了,本来这周不准备分享。但是感觉基础的一些知识可以先讲,大家先熟悉一下,所以今天就分享一下web3py跟智能合约交互的一些基础知识。 这部分都是非常简单的代码,希望大家尝试一下。安装python、pycharm这些环境和开发工具大家自行安装即可,网上一搜都是教程,比我写的好很多,这部分内容不再赘述。 web3py文档: https://web3py.readthedocs.io/en/stable/index.html web3py应该是python上跟智能合约交互最好用的包了,首先我们安装一下。 如果你是mac系统,直接使用:`pip install web3` 进行安装。 如果你是windows系统,则需要先装一下c++环境。 下载 vs_buildtools: https://visualstudio.microsoft.com/zh-hant/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16 之后如图安装下面勾选的包,一定要装全,已包含和可选两部分你都要装...
web3py第三课:游戏脚本编写 & 不开源合约调用
终于到了大家心心念念的游戏脚本编写的教程了,今天我会以前段时间比较火的游戏“掰手腕”为例子,来教大家如何写一个游戏脚本。教程无论哪个游戏,我们要写脚本,都是要先进行一下交互,看自己的交互记录来写脚本。 这里我展示一下我的一次fight记录:从这个记录中,我们可以得到很多信息。比如游戏的合约地址、方法名、参数名、参数值。 其实知道这些就可以写脚本了,但是我们还需要ABI才可以进行调用,如果我们打开合约的源代码看到的这是这样:这说明该合约没有开源,所以无法看到合约的源代码,这时候我们要怎么寻找ABI呢?如果你学习过智能合约的一些知识,可能会发现,网站(DAPP)也是通过ABI+web3.js跟智能合约做交互,我们web3py也是一样的道理。所以这些游戏网站都会有ABI来让你调用,也就是说我们去扒一扒网站的源代码即可!通过搜索,在网站的源代码中很容易可以找到。如果JS比较多,需要一个一个看。如果你用safari浏览器可以全局搜索,Chrome好像要一个一个的去找一下。 然后ABI一般都非常长,我们如果只用一个fight方法,完全可以只取这一段:[{"inputs":[{"interna...
Quarter I 2022
原文作者:Ansem(推特@blknoiz06) 原文链接: https://blknoiz06.substack.com/p/quarter-i-2022?token=eyJ1c2VyX2lkIjoxNTEzODUxLCJwb3N0X2lkIjo0NDk3NTUwMywiXyI6Impza3RSIiwiaWF0IjoxNjQxMDAyOTU4LCJleHAiOjE2NDEwMDY1NTgsImlzcyI6InB1Yi0zNDg4NDgiLCJzdWIiOiJwb3N0LXJlYWN0aW9uIn0.Cqy5UR9NIQI5frgMTGectMzDdH_0CF2RZHRcrmNejs4 译者:Evelyn、AluAyi、Henson、Rex|W3.Hitchhiker2022市场整体展望你好!对于我的堕落同胞(fellow degenerates)和其他不知何故闯入这个页面的读者们,我将尝试在这里梳理今年一季度的一些想法。这是我第二次写这样的长篇大论,所以请忍耐一下(哈哈),希望它比从我推特发出来的数百条零零散散的推文更有条理。 2021年对于加密资产来说很显然是突破性的一年,从...
web3py第一课:web3合约交互基础部分
这一篇是正式建立DFarm DAO以来的第一篇文章了,本来这周不准备分享。但是感觉基础的一些知识可以先讲,大家先熟悉一下,所以今天就分享一下web3py跟智能合约交互的一些基础知识。 这部分都是非常简单的代码,希望大家尝试一下。安装python、pycharm这些环境和开发工具大家自行安装即可,网上一搜都是教程,比我写的好很多,这部分内容不再赘述。 web3py文档: https://web3py.readthedocs.io/en/stable/index.html web3py应该是python上跟智能合约交互最好用的包了,首先我们安装一下。 如果你是mac系统,直接使用:`pip install web3` 进行安装。 如果你是windows系统,则需要先装一下c++环境。 下载 vs_buildtools: https://visualstudio.microsoft.com/zh-hant/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16 之后如图安装下面勾选的包,一定要装全,已包含和可选两部分你都要装...
web3py第三课:游戏脚本编写 & 不开源合约调用
终于到了大家心心念念的游戏脚本编写的教程了,今天我会以前段时间比较火的游戏“掰手腕”为例子,来教大家如何写一个游戏脚本。教程无论哪个游戏,我们要写脚本,都是要先进行一下交互,看自己的交互记录来写脚本。 这里我展示一下我的一次fight记录:从这个记录中,我们可以得到很多信息。比如游戏的合约地址、方法名、参数名、参数值。 其实知道这些就可以写脚本了,但是我们还需要ABI才可以进行调用,如果我们打开合约的源代码看到的这是这样:这说明该合约没有开源,所以无法看到合约的源代码,这时候我们要怎么寻找ABI呢?如果你学习过智能合约的一些知识,可能会发现,网站(DAPP)也是通过ABI+web3.js跟智能合约做交互,我们web3py也是一样的道理。所以这些游戏网站都会有ABI来让你调用,也就是说我们去扒一扒网站的源代码即可!通过搜索,在网站的源代码中很容易可以找到。如果JS比较多,需要一个一个看。如果你用safari浏览器可以全局搜索,Chrome好像要一个一个的去找一下。 然后ABI一般都非常长,我们如果只用一个fight方法,完全可以只取这一段:[{"inputs":[{"interna...
Quarter I 2022
原文作者:Ansem(推特@blknoiz06) 原文链接: https://blknoiz06.substack.com/p/quarter-i-2022?token=eyJ1c2VyX2lkIjoxNTEzODUxLCJwb3N0X2lkIjo0NDk3NTUwMywiXyI6Impza3RSIiwiaWF0IjoxNjQxMDAyOTU4LCJleHAiOjE2NDEwMDY1NTgsImlzcyI6InB1Yi0zNDg4NDgiLCJzdWIiOiJwb3N0LXJlYWN0aW9uIn0.Cqy5UR9NIQI5frgMTGectMzDdH_0CF2RZHRcrmNejs4 译者:Evelyn、AluAyi、Henson、Rex|W3.Hitchhiker2022市场整体展望你好!对于我的堕落同胞(fellow degenerates)和其他不知何故闯入这个页面的读者们,我将尝试在这里梳理今年一季度的一些想法。这是我第二次写这样的长篇大论,所以请忍耐一下(哈哈),希望它比从我推特发出来的数百条零零散散的推文更有条理。 2021年对于加密资产来说很显然是突破性的一年,从...
Subscribe to ourens.eth
Subscribe to ourens.eth
Share Dialog
Share Dialog
<100 subscribers
<100 subscribers
因为今天就要进行IFO,所以时间比较紧急。我这次只讲一下存入和取出的交互方法,会省略一些内容,这些会在以后再讲。
首先我要说一点,这次IFO基本不会赚钱,只能让你回本一些,也不能完全回本。
我有一个朋友,参加了很多很多次IFO了,大约打了半年了吧,目前也才刚回本几期,才开始赚钱。所以参与的风险是极大的,我先把风险跟大家讲清楚。
IFO分为两个池子,大户池和阳光普照池,我们用脚本批量参与的就是阳光普照的池子。如果要参与IFO,你的地址必须要花1.5CAKE去设置一个头像,这个头像是个NFT,加入战队和起个名字。所以不算投入打新的100刀,你首先就要有每个地址1.5CAKE的成本。据我估计,参与一次IFO,这1.5CAKE都比较难赚回来。感觉要2期才能回本…
但是有很多已经回本的地址,这期还会参与,所以会越来越卷。而且一直传言要取消阳光普照这种分发方式,所以下一期可能你的多地址就直接废了,回本无望…
所以一定要想清楚,多地址打新不是稳赚的事情!千万别上头!了解这些再往下看。
再强调一点哈,因为我之前也没参与过IFO,所以教程可能会有些错误,希望大家如果发现,及时告诉我。
虽然我没参与过,但是我请教了我一位常年打新的朋友,说一下流程。
一个崭新的地址,准备好CAKE和BNB,转账方法可以用我之前教过的代码来写,非常简单。
然后就是要花1.5CAKE去设置头像了,这里需要授权CAKE、生成头像、设置用户名、加入战队的操作。
这几步操作随时都可以做,不受时间限制,我希望你在网页上一步一步进行,每一步进行完毕之后,去查看区块链上的记录。
去看调用了哪个合约,哪个方法,参数是什么:

你需要记录下每一步的操作,用代码去调用合约。下面用存入IFO的合约举例:

可以看到,存入就是调用depositPool即可。代码如下:
from web3 import Web3, HTTPProvider
cake_address = # cake合约地址
cake_abi = # cake abi
ifo_address = # ifo 合约地址
ifo_abi = # ifo abi
ifo_cake_amount = # 投入cake数量
wallet_address = '' # 你的地址
private_key = '' # 你的私钥
rpc = 'https://bsc-dataseed1.binance.org:443'
web3 = Web3(HTTPProvider(rpc))
address = Web3.toChecksumAddress(wallet_address)
ifo_contract = web3.eth.contract(address=ifo_address, abi=ifo_abi)
func = ifo_contract.functions.depositPool(web3.toWei(ifo_cake_amount, 'ether'), 0)
nonce = web3.eth.getTransactionCount(wallet_address)
params = {
"from": wallet_address,
"value": web3.toWei(0, 'ether'),
'gasPrice': web3.toWei(5, 'gwei'),
"gas": 500000,
"nonce": nonce,
}
try:
tx = func.buildTransaction(params)
signed_tx = web3.eth.account.sign_transaction(tx, private_key=private_key)
tx_hash = web3.eth.sendRawTransaction(signed_tx.rawTransaction)
print(f"交易发送成功:{tx_hash.hex()}")
except Exception as e:
print(f"{address}交易发送失败:", e)
这段代码感觉不用多解释,跟第一节课的转账十分类似,就是改了一下方法名。
记住,我们参与的池子ID是0即可!提取的方法大同小异:harvestPool(0) 。基本也是换个方法名就行!
你看到这里会发现,其实所有合约的交互,只要有合约地址、合约ABI、方法名和参数,就可以调用了。其实就是这样!之所以前面设置头像那些没讲,也是希望你们自己探索一下,看看遇到什么问题没有。
比如授权就是调用approve方法,传入授权合约地址和数量即可。如果要铸造NFT,就是调用mint方法。当然可能不同合约名字不一样,我们去区块链浏览器看一下即可。
有了第一课的基础,再看第二课就觉得比较简单。一定要看全哦~
因为今天时间紧张,所以可能写的有些凌乱,如果遇到问题一定要在discord中问我!
还有就是任何投资都有风险,切勿盲目跟风,多思考!
因为今天就要进行IFO,所以时间比较紧急。我这次只讲一下存入和取出的交互方法,会省略一些内容,这些会在以后再讲。
首先我要说一点,这次IFO基本不会赚钱,只能让你回本一些,也不能完全回本。
我有一个朋友,参加了很多很多次IFO了,大约打了半年了吧,目前也才刚回本几期,才开始赚钱。所以参与的风险是极大的,我先把风险跟大家讲清楚。
IFO分为两个池子,大户池和阳光普照池,我们用脚本批量参与的就是阳光普照的池子。如果要参与IFO,你的地址必须要花1.5CAKE去设置一个头像,这个头像是个NFT,加入战队和起个名字。所以不算投入打新的100刀,你首先就要有每个地址1.5CAKE的成本。据我估计,参与一次IFO,这1.5CAKE都比较难赚回来。感觉要2期才能回本…
但是有很多已经回本的地址,这期还会参与,所以会越来越卷。而且一直传言要取消阳光普照这种分发方式,所以下一期可能你的多地址就直接废了,回本无望…
所以一定要想清楚,多地址打新不是稳赚的事情!千万别上头!了解这些再往下看。
再强调一点哈,因为我之前也没参与过IFO,所以教程可能会有些错误,希望大家如果发现,及时告诉我。
虽然我没参与过,但是我请教了我一位常年打新的朋友,说一下流程。
一个崭新的地址,准备好CAKE和BNB,转账方法可以用我之前教过的代码来写,非常简单。
然后就是要花1.5CAKE去设置头像了,这里需要授权CAKE、生成头像、设置用户名、加入战队的操作。
这几步操作随时都可以做,不受时间限制,我希望你在网页上一步一步进行,每一步进行完毕之后,去查看区块链上的记录。
去看调用了哪个合约,哪个方法,参数是什么:

你需要记录下每一步的操作,用代码去调用合约。下面用存入IFO的合约举例:

可以看到,存入就是调用depositPool即可。代码如下:
from web3 import Web3, HTTPProvider
cake_address = # cake合约地址
cake_abi = # cake abi
ifo_address = # ifo 合约地址
ifo_abi = # ifo abi
ifo_cake_amount = # 投入cake数量
wallet_address = '' # 你的地址
private_key = '' # 你的私钥
rpc = 'https://bsc-dataseed1.binance.org:443'
web3 = Web3(HTTPProvider(rpc))
address = Web3.toChecksumAddress(wallet_address)
ifo_contract = web3.eth.contract(address=ifo_address, abi=ifo_abi)
func = ifo_contract.functions.depositPool(web3.toWei(ifo_cake_amount, 'ether'), 0)
nonce = web3.eth.getTransactionCount(wallet_address)
params = {
"from": wallet_address,
"value": web3.toWei(0, 'ether'),
'gasPrice': web3.toWei(5, 'gwei'),
"gas": 500000,
"nonce": nonce,
}
try:
tx = func.buildTransaction(params)
signed_tx = web3.eth.account.sign_transaction(tx, private_key=private_key)
tx_hash = web3.eth.sendRawTransaction(signed_tx.rawTransaction)
print(f"交易发送成功:{tx_hash.hex()}")
except Exception as e:
print(f"{address}交易发送失败:", e)
这段代码感觉不用多解释,跟第一节课的转账十分类似,就是改了一下方法名。
记住,我们参与的池子ID是0即可!提取的方法大同小异:harvestPool(0) 。基本也是换个方法名就行!
你看到这里会发现,其实所有合约的交互,只要有合约地址、合约ABI、方法名和参数,就可以调用了。其实就是这样!之所以前面设置头像那些没讲,也是希望你们自己探索一下,看看遇到什么问题没有。
比如授权就是调用approve方法,传入授权合约地址和数量即可。如果要铸造NFT,就是调用mint方法。当然可能不同合约名字不一样,我们去区块链浏览器看一下即可。
有了第一课的基础,再看第二课就觉得比较简单。一定要看全哦~
因为今天时间紧张,所以可能写的有些凌乱,如果遇到问题一定要在discord中问我!
还有就是任何投资都有风险,切勿盲目跟风,多思考!
No activity yet