この記事はオオキマキさんのKyber NetworkでdAppsを作ってみよう勉強会の後半部分の記事です。前半部分はこちらをどうぞ!
また同じ部分の記事ですがより画像が多い記事もこちらにあります!
動かない、などありましたらコメントください!
必要なもの
- MetaMask
- npm
Kyber Networkとは?
どんなトークンをどこでも使えるようにするマントラです。合言葉はAny Token, Anywhereです。詳しくはKyber Network Evangelistのhoryさんの資料をご覧ください。
やってみる
Kyner NetworkのSolidityのバージョンが低く、truffleだとコンパイラのバージョンを落とせないためRemixを使います。
準備
git clone https://github.com/KyberNetwork/smart-contracts.git
cd smart-contract
npm install -g remixd
-
touch contracts/KyberExample.sol
(今回使うファイルです) remixd -s <path/to/contracts folder>
- https://remix.ethereum.org/#optimize=true&version=soljson-v0.4.18+commit.9cf6e910.js を開く(CompilerのバージョンをKyberNetworkに合わせてあります)
- Remixの左上の方にある鎖アイコンをクリック→Connectを選択
-
https://developer.kyber.network/docs/DappsGuide#contract-example を
KyberExample.sol
にコピペし、下記の修正を行う。- l. 79のsrcToken → token
- l. 86のrequire外す
- 修正後のコードはこちら
-
KyberNetworkProxyInterface.sol
にこれをコピペする
function swapTokenToEther(ERC20 token, uint srcAmount, uint minConversionRate) public returns(uint) ;
function swapEtherToToken(ERC20 token, uint minConversionRate) public payable returns(uint);
function swapTokenToToken(
ERC20 src,
uint srcAmount,
ERC20 dest,
uint minConversionRate
)
public
returns(uint);
function trade(
ERC20 src,
uint srcAmount,
ERC20 dest,
address destAddress,
uint maxDestAmount,
uint minConversionRate,
address walletId
)
public
payable
returns(uint);
- ContractとTokenのAddressはここを参照 https://developer.kyber.network/docs/RopstenEnvGuide
swapEtherToTokenを試す
- MetaMaskがRopstenになっていることを確認
- 右側のRunのところからKyberExampleを選択
- Gas limitを6000000くらいにしてDeploy
- MetaMaskを開いて確認を押す
- Depoyed ContractsからswapEtherToTokenの所の下三角をクリック
- _kyberNetworkProxyにhttps://developer.kyber.network/docs/RopstenEnvGuide#kybernetworkproxy を入力
- tokenに https://developer.kyber.network/docs/RopstenEnvGuide#adx-adex を入力(ADXの場合)
- destAddressに自分のMetaMaskのアドレスを入力
- transactを押す
- Tx例 https://ropsten.etherscan.io/tx/0xc78621b0006bd784f939c2367d9ed87736bb8a348cf53c1a2d66873c9ba0051f
swapTokenToEtherを試す
- 送るtokenのapproveをする
- Load contract from addressに https://developer.kyber.network/docs/RopstenEnvGuide#adx-adex をコピーしAt Addressを押す
- Deployed ContractsからERC 20を選択
- approveを選択
- _spenderにKyberExampleのアドレスを入力
- _valueにapproveする量を入れる
- Ethscanでtokenを確認して、Decimalsの所にある0の数を追加するのを忘れない
- https://etherconverter.online/ が使いやすい
- transactを押す
- Tx例 https://ropsten.etherscan.io/tx/0x2b639127f1013352c36f8bd386748c023c7f94585b8d47eb00d749498ffdae6a
- approveを選択
- KyberNetworkを使いswapTokenToEtherを試す
- Deployed ContractsからKyberExampleを選択
- swapTokenToEtherを選択
- _kyberNetworkProxyにhttps://developer.kyber.network/docs/RopstenEnvGuide#kybernetworkproxy を入力
- tokenに https://developer.kyber.network/docs/RopstenEnvGuide#adx-adex を入力(ADXの場合)
- tokenQtyに上記でapproveした以下の数を入力
- destAddressに自分のMetaMaskのアドレスを入力
- transactを押す
- EthscanでTxを確認すると、OverviewのToの所に小さくTRANSFERの額が書いてある。ValueはFromのアドレスから出た額なので0となっている
- swapTokenToEtherを選択
- Deployed ContractsからKyberExampleを選択