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-node2. yarn를 설치한 경우yarn3. 최신 Ganache 0x snapshot 다운로드yarn download_snapshot4. 다른 터미널을 열고 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(0x6ecbe1db9ef729cbe972c83fb886247691fb6) 즉, 계정 1이 Maker이고 계정 2가 Taker입니다. Balance를 보면, Maker의 WETH가 증가하고 있어, Taker의 ZRX가 적게 되어 있는 것을 알 수 있다.

참고 기사


  • 0x org ( htps : // 0x. rg/ )
  • 0x starter project ( htps : // 기주 b. 코 m / 0xP 로지 ct / 0x - s r rp 로지 ct )
  • 0x doc ( htps // 0xp 여지 ct. 코 m / ぃき # 부이 ld - 아레 ぁ )
  • 좋은 웹페이지 즐겨찾기