兑换合约 = 交易所? / 学习智能合约#16
如果你已在自己的网站中发行了基于以太坊的代币,但是还没有上交易所,那么,你要如何与其他人交易你的代币呢?
以太币和代币之间的交易可以理解为一个兑换合约,其实质是ICO的思路! 你给他转以太币,他给你转代币,还不就是ICO合约嘛。嗯,赶紧把《ICO合约》翻出来整整。
改造好的代码如下:
pragma solidity >=0.4.22 <0.7.0;
interface TokenToExchange {
function transfer(address _to, uint256 _value) external returns (bool success);
function transferFromOrigin(address _to, uint256 _value) external returns (bool success);
}
contract Exchange {
TokenToExchange token = TokenToExchange(0x991F313230940ab48f9Ea8B04084FA790B882b53);
uint public price = 10000; //1eth=10000lark
//给合约转以太币以换取代币
receive() external
payable
{
token.transfer(msg.sender, msg.value * price);
}
fallback () external payable { }
function larkToEth(uint _amount)
public
payable
{
token.transferFromOrigin(address(this), _amount);
msg.sender.transfer(_amount / price);
}
function getThis()
public
view
returns(address)
{
return address(this);
}
}
代码还蛮简洁的,两个简单的函数就可以实现以太币和代币之间的兑换。 这确实是以太坊擅长的事情!
按这个思路进一步下去,只要设定好价格,以太币和任何代币都可以兑换,这不就是去中心化的交易所嘛!所以,基于以太坊,你开发个代币交易所还是很容易的,聪明睿智的你有把握到关键点么!