AstarNetwork / ZKRollups

ZK Rollups pallet implementation
Apache License 2.0
39 stars 13 forks source link

Operator Container #9

Closed ashWhiteHat closed 3 years ago

ashWhiteHat commented 3 years ago

Build Operator Container in order to register prover.

ashWhiteHat commented 3 years ago

Failed to start operator container

The command can be executed but it's not listening to any port. Ideally, the operator container should listen to 3000, 3031, and 3030, 8088. It's necessary to execute zksync_server --genesis command before start operator.

ashWhiteHat commented 3 years ago

Failed to execute --genesis option

GENESIS_ROOT=0x24fb8350686446796e71ca3f33d4e256aa3c6bee7bb19fbbff2540de71bb22ba
thread 'main' panicked at 'Initial token list not found: No such file or directory (os error 2)', /usr/src/zksync/core/bin/zksync_core/src/lib.rs:103:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
ashWhiteHat commented 3 years ago

ZKSYNC_HOMEを設定する必要がある

ashWhiteHat commented 3 years ago

ここのトークンコントラクトからデータを引っ張っている https://github.com/ArtreeTechnologies/zksync/tree/master/etc/tokens

ashWhiteHat commented 3 years ago

デフォルトの環境変数がlocalhostなのでコントラクトのデプロイ作業とjsonの出力作業があるらしい

ashWhiteHat commented 3 years ago

ここで排出している https://github.com/ArtreeTechnologies/zksync/blob/master/infrastructure/zk/src/run/run.ts#L19

ashWhiteHat commented 3 years ago

ここでデプロイしている https://github.com/ArtreeTechnologies/zksync/blob/master/contracts/package.json#L36

ashWhiteHat commented 3 years ago

serverを起動した後にredeployをしている。。。なぜ。。。

ashWhiteHat commented 3 years ago

buildの際に既にトークンリストは完成している https://github.com/ArtreeTechnologies/zksync/blob/master/infrastructure/zk/src/init.ts#L24

ashWhiteHat commented 3 years ago

deployERC20deployEIP1271を実行している。 ここでトークンを配列として渡している https://github.com/ArtreeTechnologies/zksync/blob/master/contracts/scripts/deploy-erc20.ts#L62

ashWhiteHat commented 3 years ago

Tokenインターフェスをjsonに書き込んでいる https://github.com/ArtreeTechnologies/zksync/blob/master/contracts/scripts/deploy-erc20.ts#L15

ashWhiteHat commented 3 years ago

ZK Rollupで取り扱うトークンの種類を定義している説

ashWhiteHat commented 3 years ago

DAIだけデプロイしておこう

ashWhiteHat commented 3 years ago

メインチェーンにコントラクトをデプロイしてそのデプロイしたコントラクトのアドレスを含めTokenインターフェスで返し、jsonに出力する必要がある。 インテグレーションテストの形式をどうしようか

ashWhiteHat commented 3 years ago

クロスホストでコンポーネントを動かせるようにする。 docker-composeで動作確認中。 コンポーネントは

ashWhiteHat commented 3 years ago

まずは、Operatorの動作確認を行うため、Substrate blockchainにトークンコントラクトをデプロイしてjsonファイルをフォーマットに沿って出力する。

ashWhiteHat commented 3 years ago

環境変数は別途ファイルに出力する https://docs.docker.com/compose/environment-variables/ https://qiita.com/katoosky/items/422c183cf5cabb789030

ashWhiteHat commented 3 years ago
ashWhiteHat commented 3 years ago

オペレータコンテナとマウントする必要がある

ashWhiteHat commented 3 years ago

デプロイしたコントラクトはハードコードする

ashWhiteHat commented 3 years ago

最初のブロックがコミットされていないかスペックファイルが読み込まれておらず、senderの残高が0になっている。

ashWhiteHat commented 3 years ago

senderの残高は0になっていない。 contract addressが違うのかもしれない。

ashWhiteHat commented 3 years ago

仮説としてはsend transactionを実行した関係でnonceがズレてcontract addressが変わった。 検証としてコントラクトのテストだけ通してみる。

ashWhiteHat commented 3 years ago

create blockが上手くいっていない

ashWhiteHat commented 3 years ago

validator nodeで動かすしかブロックを承認する方法はない

ashWhiteHat commented 3 years ago

エラーを誤読していたためもっと冷静になろう

ashWhiteHat commented 3 years ago

次にTokenコントラクトをデプロイしてファイルをオペレータ用に用意する

ashWhiteHat commented 3 years ago
  1. コントラクトのデプロイ(addressは予めハードコード)
ashWhiteHat commented 3 years ago

TokenコントラクトのSolidityコードを探す

ashWhiteHat commented 3 years ago

ここにテストコントラクト https://github.com/ArtreeTechnologies/zksync/blob/master/contracts/dev-contracts/TestnetERC20Token.sol

ashWhiteHat commented 3 years ago

Substrateチェーンに上記コントラクトをデプロイしてアドレスを取得する

ashWhiteHat commented 3 years ago

アップデートしないとERC20Detailed.solは使われていないんじゃないのか https://github.com/itinance/openzeppelin-solidity/blob/master/contracts/token/ERC20/ERC20Detailed.sol

ashWhiteHat commented 3 years ago

signtransactionで引数を渡す https://www.reddit.com/r/ethdev/comments/eeehr7/deploy_a_contract_with_constructor_arguments_with/

ashWhiteHat commented 3 years ago

コントラクトを継承するとデプロイが成功しなくなる

ashWhiteHat commented 3 years ago

この際、Etherのトランスファーだけでいいのではないかという気がしてきた

ashWhiteHat commented 3 years ago

いったん、トークンリストは空欄で

ashWhiteHat commented 3 years ago

TokenInitコントラクトにはZkRollupで対応しているコントラクトのアドレスが入る

ashWhiteHat commented 3 years ago

local.jsonに空欄を渡してOperatorを初期化する

ashWhiteHat commented 3 years ago

GENESIS_ROOTを設定してもオペレータは起動しない

ashWhiteHat commented 3 years ago

AWSで正常な動作を確認

ashWhiteHat commented 3 years ago

ログを解析する truffleでsubstrateにデプロイできないか確かめる

ashWhiteHat commented 3 years ago

簡略化したログ

12: Pulling from library/postgres
Digest: sha256:95f2184e47035473fc463b5f65254a9b1b770cdb82281a76235b30f335cda2d4
Status: Downloaded newer image for postgres:12
latest: Pulling from adria0/tesseracts
Digest: sha256:6870ce2716d87f6b24cc17987e553a1e2d4cfb1a344863cb331dd293f647bd36
Status: Downloaded newer image for adria0/tesseracts:latest
yarn install v1.22.5
[1/4] Resolving packages...
[2/4] Fetching packages...
info fsevents@2.1.3: The platform "linux" is incompatible with this module.
info "fsevents@2.1.3" is an optional dependency and failed compatibility check. Excluding it from installation.
info fsevents@1.2.13: The platform "linux" is incompatible with this module.
info "fsevents@1.2.13" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
Done in 72.70s.
yarn run v1.22.5
$ yarn workspace zksync prepublish
$ yarn build && rollup -c
$ tsc
Done in 8.60s.
Initializing download: https://universal-setup.ams3.digitaloceanspaces.com/setup_2%5E20.key
File size: 67109136 bytes
Opening output file setup_2^20.key
Starting download

[  0%]  .......... .......... .......... .......... ..........  [  49.5KB/s]
[ 99%]  .......... .......... .......... .......... ..........  [4383.0KB/s]
        ,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,,, ,,,,,,
Connection 1 finished

Downloaded 4.0 Gigabyte in 13:35 minute(s). (5144.40 KB/s)
Keys unpacked
DATABASE_URL = postgres://postgres@localhost/plasma
yarn run v1.22.5
$ yarn workspace franklin-contracts build-dev
$ waffle .waffle-dev.json
Done in 41.57s.
yarn run v1.22.5
$ yarn workspace franklin-contracts deploy-eip1271
$ ts-node scripts/deploy-eip1271.ts
Done in 6.31s.
yarn run v1.22.5
$ yarn workspace franklin-contracts build
$ waffle .waffle.json
Done in 11.04s.
Dropping DB...
DATABASE_URL = postgres://postgres@localhost/plasma
Successfully inserted contract address into the database
GENESIS_ROOT=0x24fb8350686446796e71ca3f33d4e256aa3c6bee7bb19fbbff2540de71bb22ba
Deploying contracts, results will be inserted into the db
yarn run v1.22.5
$ yarn workspace franklin-contracts deploy-no-build
$ ts-node scripts/deploy.ts
Using gas price: 9.0 gwei
Deploying for governor: 0x52312AD6f01657413b2eaE9287f6B9ADaD93D5FE
Deploying zkSync target
CONTRACT_TARGET_ADDR=0xa1453A97EF37FD456c0698e9aF0b745c669Ad8Ee
zkSync target deployed, gasUsed: 5033292, eth spent: 0.045299628
Deploying verifier target
VERIFIER_TARGET_ADDR=0x63bfb2118771bd0da7A6936667A7BB705A06c1bA
Verifier target deployed, gasUsed: 3821017, eth spent: 0.034389153
Deploying governance target
GOVERNANCE_TARGET_ADDR=0x4316D36b3dDbee249f8E9EfB22505cD047988e07
Governance target deployed, gasUsed: 487436, eth spent: 0.004386924
DEPLOY_FACTORY_ADDR=0x9ad574a765F65Ec554780c2b5D97979Ed1957d30
GOVERNANCE_ADDR=0x9534A57289B8F1b8DCB6B2722c803F2969a8C0D1
CONTRACT_ADDR=0x9Ab6772BD7789d2865A27DA5a3F7F265Bc3ea39d
VERIFIER_ADDR=0xC3918Ed4a67a9D02263aebbcc33A5FD8b76A84eC
UPGRADE_GATEKEEPER_ADDR=0xC8bf39e4d915515362833CED86C8FB7915Ea623A
GENESIS_TX_HASH=0x18219e4e0e6d1f3ba7ed332b2ccb40bb9bfbe57af918908e43625ac2700bb9fd
Deploy finished, gasUsed: 3937046, eth spent: 0.035433414
Done in 21.85s.
Successfully inserted contract address into the database
yarn run v1.22.5
$ yarn workspace franklin-contracts publish-sources
$ ts-node scripts/publish.ts
Publishing ABI for UpgradeGatekeeper
Publishing ABI for ZkSync (proxy)
Publishing ABI for Verifier (proxy)
Publishing ABI for Governance (proxy)
Done in 5.87s.
ashWhiteHat commented 3 years ago

①コンテナのビルド ②zksyncディレクトリでのtypescriptのビルドとrollupコマンド https://github.com/matter-labs/zksync/blob/master/sdk/zksync.js/package.json#L40

ashWhiteHat commented 3 years ago

インスタンスの中でコマンドを打つ

ashWhiteHat commented 3 years ago

この以下2つのコマンドがわからない https://github.com/matter-labs/zksync/blob/5b936b1855a08033cca7f75d6f87fde106c6e8fd/infrastructure/zk/src/db/db.ts#L43

ashWhiteHat commented 3 years ago

sqlxはマイグレーションを管理するRustのモジュール prepareで用意するのであろう(dieselとsqlxの両方が必要の意味がわからない) https://qiita.com/yagince/items/ffbff7d15420be1fc411

ashWhiteHat commented 3 years ago

このコマンドが怪しい https://github.com/matter-labs/zksync/blob/5b936b1855a08033cca7f75d6f87fde106c6e8fd/infrastructure/zk/src/contract.ts#L25

ashWhiteHat commented 3 years ago

環境変数をどうやって読み込んでいるのだろう

ashWhiteHat commented 3 years ago

このコマンドが怪しい

トークンのTokenInitのコントラクトを生成している。 その後、コンパイル。

ashWhiteHat commented 3 years ago

ここで必要なコントラクトをデプロイしてアドレスを環境変数に書き換えている https://github.com/matter-labs/zksync/blob/5b936b1855a08033cca7f75d6f87fde106c6e8fd/infrastructure/zk/src/contract.ts#L106