Closed ashWhiteHat closed 3 years ago
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.
--genesis
optionGENESIS_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
ZKSYNC_HOMEを設定する必要がある
ここのトークンコントラクトからデータを引っ張っている https://github.com/ArtreeTechnologies/zksync/tree/master/etc/tokens
デフォルトの環境変数がlocalhostなのでコントラクトのデプロイ作業とjsonの出力作業があるらしい
serverを起動した後にredeployをしている。。。なぜ。。。
buildの際に既にトークンリストは完成している https://github.com/ArtreeTechnologies/zksync/blob/master/infrastructure/zk/src/init.ts#L24
deployERC20
とdeployEIP1271
を実行している。
ここでトークンを配列として渡している
https://github.com/ArtreeTechnologies/zksync/blob/master/contracts/scripts/deploy-erc20.ts#L62
Tokenインターフェスをjsonに書き込んでいる https://github.com/ArtreeTechnologies/zksync/blob/master/contracts/scripts/deploy-erc20.ts#L15
ZK Rollupで取り扱うトークンの種類を定義している説
DAIだけデプロイしておこう
メインチェーンにコントラクトをデプロイしてそのデプロイしたコントラクトのアドレスを含めTokenインターフェスで返し、jsonに出力する必要がある。 インテグレーションテストの形式をどうしようか
クロスホストでコンポーネントを動かせるようにする。 docker-composeで動作確認中。 コンポーネントは
まずは、Operatorの動作確認を行うため、Substrate blockchainにトークンコントラクトをデプロイしてjsonファイルをフォーマットに沿って出力する。
オペレータコンテナとマウントする必要がある
デプロイしたコントラクトはハードコードする
最初のブロックがコミットされていないかスペックファイルが読み込まれておらず、senderの残高が0になっている。
senderの残高は0になっていない。 contract addressが違うのかもしれない。
仮説としてはsend transactionを実行した関係でnonceがズレてcontract addressが変わった。 検証としてコントラクトのテストだけ通してみる。
create blockが上手くいっていない
validator nodeで動かすしかブロックを承認する方法はない
エラーを誤読していたためもっと冷静になろう
次にTokenコントラクトをデプロイしてファイルをオペレータ用に用意する
TokenコントラクトのSolidityコードを探す
Substrateチェーンに上記コントラクトをデプロイしてアドレスを取得する
アップデートしないとERC20Detailed.solは使われていないんじゃないのか https://github.com/itinance/openzeppelin-solidity/blob/master/contracts/token/ERC20/ERC20Detailed.sol
コントラクトを継承するとデプロイが成功しなくなる
この際、Etherのトランスファーだけでいいのではないかという気がしてきた
いったん、トークンリストは空欄で
TokenInitコントラクトにはZkRollupで対応しているコントラクトのアドレスが入る
local.jsonに空欄を渡してOperatorを初期化する
GENESIS_ROOTを設定してもオペレータは起動しない
AWSで正常な動作を確認
ログを解析する truffleでsubstrateにデプロイできないか確かめる
簡略化したログ
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.
①コンテナのビルド ②zksyncディレクトリでのtypescriptのビルドとrollupコマンド https://github.com/matter-labs/zksync/blob/master/sdk/zksync.js/package.json#L40
インスタンスの中でコマンドを打つ
sqlxはマイグレーションを管理するRustのモジュール prepareで用意するのであろう(dieselとsqlxの両方が必要の意味がわからない) https://qiita.com/yagince/items/ffbff7d15420be1fc411
環境変数をどうやって読み込んでいるのだろう
このコマンドが怪しい
トークンのTokenInitのコントラクトを生成している。 その後、コンパイル。
ここで必要なコントラクトをデプロイしてアドレスを環境変数に書き換えている https://github.com/matter-labs/zksync/blob/5b936b1855a08033cca7f75d6f87fde106c6e8fd/infrastructure/zk/src/contract.ts#L106
Build Operator Container in order to register prover.