作为一个想尝试并可能希望调整某些功能的开发人员,我将如何:
...in自身的坚固性。无论是在JS中还是在Python中,都不是用户。
怎么做?是否有全面的例子?
发布于 2022-08-06 14:25:22
您需要执行以下步骤。您还可以查看极小,以获得更少的使用智能契约的示例。
我们将使用uniswap,但sushiswap具有本质上相同的功能。
通过添加Sushiswap/Uniswap接口,包括您想要使用的函数,在代码中获取Sushiswap/Uniswap。对于交换,它可能如下所示:
interface IUniswapV2Router {
function swapExactTokensForTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
}假设您等待与Mainnet一起使用Uniswap路由器。
// Uniswap Mainnet ETH Router: "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D" 注意:知道WETH地址也很好,因为大多数令牌都有一个WETH池。
构建交换函数
根据uniswap abi / docs,您需要输入参数:
uint256 amountIn, // amount of tokenA in
uint256 amountOutMin, // minimum amount of tokenB you're expecting back
address[] calldata path, // the path of trading you expect.
// Like what pools are you going to interact with? For example:
// USDC -> WETH -> SOME_OBSCURE_TOKEN
// or
// DAI -> WETH
// This requires an understand of how the pools work
address to, // who will recieve the tokens
uint256 deadline // how long is this trade good for然后,构建一个类似于这样的示例func:
address private constant UNISWAP_V2_ROUTER = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
address private constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
function swap(
address _tokenIn,
address _tokenOut,
uint256 _amountIn,
uint256 _amountOutMin,
address _to
) external {
IERC20(_tokenIn).transferFrom(msg.sender, address(this), _amountIn);
IERC20(_tokenIn).approve(UNISWAP_V2_ROUTER, _amountIn);
address[] memory path;
if (_tokenIn == WETH || _tokenOut == WETH) {
path = new address[](2);
path[0] = _tokenIn;
path[1] = _tokenOut;
} else {
path = new address[](3);
path[0] = _tokenIn;
path[1] = WETH;
path[2] = _tokenOut;
}
IUniswapV2Router(UNISWAP_V2_ROUTER).swapExactTokensForTokens(
_amountIn,
_amountOutMin,
path,
_to,
block.timestamp
);
}你的合同现在可以进行互换了。
发布于 2022-02-22 14:30:10
您可以通过将请求作为JSON发送给Smart,同时通过EVM的任何实现连接到Ethereum。
事情可以进一步简化,通过使用开发工具,如“硬帽子”或“奶糖”。
无论如何,下面简要介绍一下它是如何发生的:
例如,使用HardHat,通过npm安装它:
npm install --save-dev hardhat按照说明安装依赖项。然后跑:
npx hardhat选择,然后运行"Create a sample project":
npx hardhat run scripts/sample-script.js --network localhost在示例代码(脚本/示例-script.js)中,您会发现这两行代码:
const Greeter = await hre.ethers.getContractFactory("Greeter");
const greeter = await Greeter.deploy("Hello, Hardhat!");这基本上就是将智能契约部署到区块链的方式,但由于我们使用--网络本地主机运行它,所以我们将部署到由HardHat开箱即用的本地虚拟区块链。
部署后,您可以通过以下方法执行智能契约的功能:
let txn = await greeter.functionInSmartContract(param1,param2);这是如果您有,在该源代码中,SushiSwap的合同代码是可用的,并且他们也在使用HardHat。因此,您可以将其部署到本地块链中,并通过脚本进行播放,也可以将其部署到testnet (您将需要来自炼金术或HardHat的API和HardHat中的配置)。
发布于 2022-08-06 13:36:04
为了执行您的研究,您可能想知道SushiSwap实际上是一个UniswapV2叉。因此,您可以在网上找到适用于Uniswap V2 (而不是V3,它是最新版本)的任何示例,包括编写良好的Uniswap V2文档,您可以找到这里。您正在寻找的所有答案都在“智能合同集成”部分下。
唯一的区别是您需要使用SushiSwap部署地址,而不是在苏希-夏普博士中找到的Uniswap部署地址。
然后,由您使用任何开发环境来部署您的智能契约,并执行您的事务/调用(如Remix IDE、Tru显或另一个答案所推荐的安全帽)。
最后,让您了解一下交换的样子,下面是UniswapV2 2上交换的一个完整的智能契约示例。
https://ethereum.stackexchange.com/questions/122285
复制相似问题