众所周知,交易对于时效性的要求很高,机会转瞬即逝,在区块链金融市场更是如此,有时仅仅比其他人慢了几秒也会造成很大的损失,而通过浏览器访问PancakeSwap UI进行交易的这一系列过程中存在较多繁琐且耗时的操作,难免会影响交易效率,导致错失最佳时机。出于简化交易流程、尽可能争取先机的目的,这一工具通过调用接口函数,直接在合约层面进行交互,实现了链上交易流程的最简化。
目前开源的这个版本只支持BSC链上的PancakeSwap的买入和卖出操作(且后续不会更新其他功能),但由于EVM链的共性,理论上你可以通过修改RPC以及RouterAddress,使得这一工具在任意EVM链上的任意DEX都能发挥作用,同时由于我为代码留下了足够的二次开发空间,理论上你可以通过二次开发来实现更多自己需要的功能,这正好也符合了我开源这一工具的最初想法:技术交流分享。
具体效果可参看使用示例。
- 打开命令行,切换到当前目录,执行
pip install -r requirements.txt安装依赖库。 - 修改
config.json中的各项配置以符合自己的需求,通常情况下,只需将private_key_base64参数修改为你钱包私钥的base64形式即可(这么做也仅是为私钥提供了一层微不足道的保护)。这里提供了一种生成方法:在当前目录下执行python encrypt.py,之后输入私钥即可。 - 在当前目录下执行
python swap.py,之后根据引导进行相应的操作即可。
bsc_mainnet_rpc: BSC 链主网的 RPC 地址。修改建议:自行选择合适的 RPC。
bsc_testnet_rpc: BSC 链测试网的 RPC 地址。修改建议:维持现状。
bscscan_api_key: BscScan 的 API KEY。修改建议:更换为自己的 API KEY。
network_environment: 程序工作的网络环境。修改建议:主网-"mainnet"/测试网-"testnet"。
private_key_base64: 钱包私钥的 Base64 形式。修改建议:更换为自己钱包的私钥的 Base64 形式。
buy_slippage_tolerance: 买入时的滑点容差,单位为%。修改建议:自行选择合适的值。
sell_slippage_tolerance: 卖出时的滑点容差,单位为%。修改建议:自行选择合适的值。
fund_token_use: 使用的资金币种在fund_token_list中的下标,用于指定使用的资金币种。修改建议:自行选择合适的值。
pancakeswap_router_address: PancakeswapRouter 的合约地址。修改建议:维持现状。
fund_token_list: 资金币种列表。资金币种是指买入时消耗,卖出时得到的币种。修改建议:维持现状/通过工具进行导入。
valuable_token_list: 计价币种列表。计价币种是指在进行最佳交易路由选择时,纳入考虑范围的中间币种。修改建议:维持现状/通过工具进行导入。
optional_token_list: 自选币种列表。自选币种是指需要进行交易操作的币种。修改建议:通过工具进行导入。
- 使用的是
http/https协议访问,所以ws协议特有的如事件订阅等功能是无法实现的,节点延迟也各有不同,但仅作为一个辅助交互的工具,它的功能本就无需过于复杂。 - 没有支持自定义
GasPrice,是因为在BSC链平均出块间隔仅为 3 秒的情况下,过高的GasPrice只会让你的交易Gas成本更高且没有必要,工具默认的GasPrice是BSC.gas_price+10wei,也就是5.00000001Gwei,这特意增加的 10wei,已经能让你在几乎不增加交易成本的前提下使得你的交易在 80%(甚至更高)的交易之前被确认,它足够让你领先大部分手动访问网页进行操作的人了。 - 代码是开源的,安不安全这个问题由你自行审查,以此决定要不要使用它,我只是基于技术交流分享的目的将其分享出来,仅此而已。
测试网环境:
主网环境:
由于涉及的领域较为敏感,请你事先详尽了解并严格遵守自己所在国家/地区的相关法律法规。
本项目仅出于技术交流分享的目的进行开源,不作任何投资建议和引导,任何人原则上都应只将其用于技术研究/测试,而不是用于任何实际的投资交易,由此导致的任何问题、责任、结果、损失都将由你自行承担、负责。
本项目使用 GPL-3.0 作为开源许可证。








