0x.jsを使って0xプロトコルのスマートコントラクトを使用する(概要編)
モチベーション
DEX(分散型取引所)のためのプロトコルである0x[1]を触り、0x.jsにて、オーダーの作成、記入、検証を行う。0x.jsの詳細に関してはまた次回まとめる。間違い、ご意見あればTwitter経由でご連絡ください。
セットアップ
0x.jsはEthereumと接続しアプリケーションとブロックチェーン間のインターフェースとなる役割がある。Ethereum nodeとしてはganache-cliを用いる。
0xが用意してくれている0x starter project
[2]を使用する。
git clone https://github.com/0xProject/0x-starter-project.git
ディペンデンシーをインストールするためにyarn
を用いる。
1. yarn
をインストールしていない場合
brew install yarn --without-node
2. yarn
をインストールしている場合
yarn
3. 最新のGanache 0x snapshotをダウンロード
yarn download_snapshot
4. もう1つターミナルを開きganacheを起動する
yarn ganache-cli
Stareter Projectで用意されたfill_order_erc20
を実行する。
yarn scenario:fill_order_erc20
*fill_order_erc20
はWETHとZRXを交換するオーダー
yarn run v1.12.3
$ cross-env yarn build && node ./lib/scenarios/fill_order_erc20.js
$ cross-env tsc
┌────────────┐
│ Fill Order │
└────────────┘
Accounts
Maker 0x5409ed021d9299bf6814279a6a1411a7e866a631
Taker 0x6ecbe1db9ef729cbe972c83fb886247691fb6beb
Setup
Maker ZRX Approval 0xf8f93512e3ebaaf57fa0eb9dd1c485b6f4633c37d199e9a913e76d05084f2604
Taker WETH Approval 0x292759c139ed6fdc40646083c0346a9630b2b33cfed2947e1a21f289c8eb703a
Taker WETH Deposit 0x566b6a876c4482849cab9563b6a1ebd03eb31201c2b028c15770b185a4b4aab1
Order
exchangeAddress 0x35dd2932454449b14cee11a94d3674a936d5d7b2
makerAddress 0x5409ed021d9299bf6814279a6a1411a7e866a631
takerAddress 0x0000000000000000000000000000000000000000
senderAddress 0x0000000000000000000000000000000000000000
feeRecipientAddress 0x0000000000000000000000000000000000000000
expirationTimeSeconds 1545108409
salt 7119368013313422661221815072055438267987023853367738570035607824850986278…
makerAssetAmount 5000000000000000000
takerAssetAmount 100000000000000000
makerAssetData 0xf47261b00000000000000000000000002002d3812f58e35f0ea1ffbf80a75a38c32175fa
takerAssetData 0xf47261b0000000000000000000000000d0a1e359811322d97991e03f863a0c30c2cf029c
makerFee 0
takerFee 0
Allowances
Token Maker Taker
WETH MAX_UINT MAX_UINT
ZRX MAX_UINT MAX_UINT
Balances
Token Maker Taker
WETH 2.43070141021160417 1.536283635869423603
ZRX 9998.9999945 929.25100549999999803
ETH 2.169765236821913251 0.102365525385971059
Transaction
┌───────────┬────────────────────────────────────────────────────────────────────┐
│ fillOrder │ 0x16f4754cc08f9f76f53185685c591e384dffdcc21165254f60840082fd1585b6 │
├───────────┼────────────────────────────────────────────────────────────────────┤
│ orderHash │ 0x2f25d912d6e5384eb2ab73275c0ba66ff39f7f132ce6b7e5b79be018baa4bcf5 │
├───────────┼────────────────────────────────────────────────────────────────────┤
│ gasUsed │ 117586 │
├───────────┼────────────────────────────────────────────────────────────────────┤
│ status │ Success │
└───────────┴────────────────────────────────────────────────────────────────────┘
Logs
Fill
contract 0x35dd2932454449b14cee11a94d3674a936d5d7b2
makerAddress 0x5409ed021d9299bf6814279a6a1411a7e866a631
feeRecipientAddress 0x0000000000000000000000000000000000000000
takerAddress 0x6ecbe1db9ef729cbe972c83fb886247691fb6beb
senderAddress 0x6ecbe1db9ef729cbe972c83fb886247691fb6beb
makerAssetFilledAmount 5000000000000000000
takerAssetFilledAmount 100000000000000000
makerFeePaid 0
takerFeePaid 0
orderHash 0x2f25d912d6e5384eb2ab73275c0ba66ff39f7f132ce6b7e5b79be018baa4bcf5
makerAssetData 0xf47261b00000000000000000000000002002d3812f58e35f0ea1ffbf80a75a38c32175fa
takerAssetData 0xf47261b0000000000000000000000000d0a1e359811322d97991e03f863a0c30c2cf029c
Transfer
contract 0x2002d3812f58e35f0ea1ffbf80a75a38c32175fa
_from 0x5409ed021d9299bf6814279a6a1411a7e866a631
_to 0x6ecbe1db9ef729cbe972c83fb886247691fb6beb
_value 5000000000000000000
Transfer
contract 0xd0a1e359811322d97991e03f863a0c30c2cf029c
_from 0x6ecbe1db9ef729cbe972c83fb886247691fb6beb
_to 0x5409ed021d9299bf6814279a6a1411a7e866a631
_value 100000000000000000
Balances
Token Maker Taker
WETH 2.53070141021160417 1.436283635869423603
ZRX 9993.9999945 934.25100549999999803
ETH 2.169765236821913251 0.102247939385971059
✨ Done in 70.05s.
ここでは、ganache上のアカウント1(0x5409ed021d9299bf6814279a6a1411a7e866a631)がオーダーを作成し、アカウント2(0x6ecbe1db9ef729cbe972c83fb886247691fb6beb)がオーダーを記入している。つまりアカウント1がMakerであり、アカウント2がTakerである。Balanceをみると、MakerのWETHが増えており、TakerのZRXが少なくなっているのが分かる。
参考記事
- 0x org (https://0x.org/)
- 0x starter project (https://github.com/0xProject/0x-starter-project)
- 0x doc (https://0xproject.com/wiki#Build-A-Relayer)
Author And Source
この問題について(0x.jsを使って0xプロトコルのスマートコントラクトを使用する(概要編)), 我々は、より多くの情報をここで見つけました https://qiita.com/SotaWatanabe/items/d872d2d43d2d5631c5b0著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .