搭建本地 zksync

操作系統(tǒng):MAC OS 10.14.x
zksync:https://github.com/matter-labs/zksync,master 分支
commit 899ca93052420c33583755cd2162143f461f36b3

需要注意的是烫罩,閱讀完整源代碼需要查看dev分支挽封,master分支是提供編譯后的各種執(zhí)行程序好芭。在以下安裝時进萄,請科學(xué)上網(wǎng)塔粒。

環(huán)境準(zhǔn)備 zksync/docs/setup-dev.md

1糖声、安裝docker

brew cask install docker

2抽莱、安裝Node & Yarn

brew install nodejs yarn

3、Axel

brew install axel
axel版本有差異纸型,請采用axel 2.17.X拇砰,ubuntu、centos7狰腌、8環(huán)境除破,axel2.4、2.5版本均有問題癌别,主要體現(xiàn)在執(zhí)行:cargo install diesel_cli --no-default-features --features postgres無法通過皂岔。

4蹋笼、Rust

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustc --version
rustc 1.46.0 (04488afe3 2020-08-24)

5展姐、postgresql

brew install postgresql

6躁垛、Diesel cli

cargo install diesel_cli --no-default-features --features postgres
過程比較慢,耐心等待圾笨。教馆。。

7擂达、sqlx cli

cargo install sqlx-cli

8土铺、solc

必須是v0.5.X
brew install solidity@5

9、下載zksync

git clone https://github.com/matter-labs/zksync.git

10板鬓、編輯~/. bash_profile:

export ZKSYNC_HOME=/path/to/zksync
export PATH=$ZKSYNC_HOME/bin:$PATH

到這里悲敷,環(huán)境依賴已經(jīng)完成了

啟動zksync zksync/docs/launch.md

1、設(shè)置本地運行環(huán)境

cd zksync/bin && ./zk     #installs and builds zk itself
zk init                   #時間會比較久俭令,耐心等待需要下載約8G的電路設(shè)置文件

初始化只需要一次即可后德,查看infrastructure/zk/src/init.ts

export async function init() {
    if (!process.env.CI) {
        await checkEnv();
        await env.gitHooks();
        await up();
    }
    await utils.allowFail(run.yarn());
    await run.plonkSetup();
    await run.verifyKeys.unpack();
    await db.setup();
    await contract.buildDev();
    await run.deployERC20('dev');
    await contract.build();
    await server.genesis();
    await contract.redeploy();
}

2、啟動容器

zk up
查看infrastructure/zk/src/up.ts,該命令啟動了geth 1抄腔,postgres瓢湃,dev-ticker,tesseracts

export async function up() {
    await utils.spawn('docker-compose up -d postgres geth dev-ticker');
    await utils.spawn('docker-compose up -d tesseracts');
}

退出容器
zk down

3赫蛇、運行zksync server

$ zk server
    Finished release [optimized] target(s) in 1.28s
     Running `target/release/zksync_server`
[2020-12-07T06:23:10Z INFO  zksync_server] Running the zkSync server
[2020-12-07T06:23:10Z INFO  zksync_server] Starting the Core actors
[2020-12-07T06:23:10Z INFO  zksync_core::state_keeper] Loaded committed state: last block number: 8, unprocessed priority op: 4
[2020-12-07T06:23:10Z INFO  zksync_core::state_keeper] created state keeper, root hash = Fr(0x2e1da2ec83289a3bb50282b56dee671ff815ac520f5a64c2ce89f3e62284a7dc)
[2020-12-07T06:23:10Z INFO  zksync_core::state_keeper] Executed restored proposed block: 0 transactions, 0 priority operations, 0 failed transactions
[2020-12-07T06:23:10Z INFO  zksync_server] Starting the API server actors
[2020-12-07T06:23:10Z INFO  zksync_server] Starting the Ethereum sender actors
[2020-12-07T06:23:10Z INFO  zksync_server] Starting the Prover server actors
[2020-12-07T06:23:10Z INFO  zksync_witness_generator] Starting witness generator (1,2)
[2020-12-07T06:23:10Z INFO  zksync_witness_generator::witness_generator] preparing prover data routine started with start_block(1), block_step(2)
[2020-12-07T06:23:10Z INFO  zksync_witness_generator] Starting witness generator (2,2)
[2020-12-07T06:23:10Z INFO  zksync_witness_generator::witness_generator] preparing prover data routine started with start_block(2), block_step(2)
[2020-12-07T06:23:10Z INFO  zksync_core::mempool] 0 transactions were restored from the persistent mempool storage

第一次運行會編譯rust绵患,時間比較久,請耐心等待
查看infrastructure/zk/src/server.ts悟耘,用ts來編譯落蝙、運行了core/bin/server/src/main.rs

export async function server() {
    await utils.spawn('cargo run --bin zksync_server --release');
}
關(guān)于etc/env/dev.env

這個文件是在init的時候從dev.env.example復(fù)制生成的作煌【蚺梗可以修改其中的參數(shù),
如端口參數(shù)粟誓、出塊間隔奏寨、見證者數(shù)量等。在本地的部署測試中鹰服,發(fā)現(xiàn)zk server的時候端口被占用的錯誤病瞳,首先請排查端口占用情況:lsof -i:8545,如果沒有占用情況,那可以修改dev.env的端口在嘗試一下悲酷。有需要的話套菜,需要同步修改etc/js/env-config.js的端口。

4设易、運行zksync cli

cd bin && vim zcli      #拷貝zk文件內(nèi)容逗柴,作出相應(yīng)修改

zcli文件內(nèi)容:

#!/bin/bash

if [ -z "$1" ]; then
    cd $ZKSYNC_HOME
    yarn && yarn zcli build
else
    # can't start this with yarn since it has quirks with `--` as an argument
    node -- $ZKSYNC_HOME/infrastructure/zcli/build/index.js "$@"
fi
$ ./zcli      #build xcli

$ zcli -h   #查看命令行幫助
Usage: zcli [options] [command]

Options:
  -V, --version                                    output the version number
  -n, --network <network>                          select network (default: "localhost")
  -h, --help                                       display help for command

Commands:
  account [address]                                view account info
  transaction <tx_hash>                            view transaction info
  transfer [options] [amount] [token] [recipient]  make a transfer
  deposit [options] [amount] [token] [recipient]   make a deposit
  await [options] <type> <tx_hash>                 await for transaction commitment/verification
  networks                                         view configured networks
  wallets                                          view saved wallets
  help [command]                                   display help for command

添加賬號:

$ zcli wallets add 0x27593fea79697e947890ecbecce7901b0008345e5d7259710d0dd5e500d040be
[WARNING]: private keys are stored unencrypted
"0xde03a0B5963f75f1C8485B355fF6D30f3093BDE7"

$ zcli wallets default 0xde03a0b5963f75f1c8485b355ff6d30f3093bde7
"0xde03a0b5963f75f1c8485b355ff6d30f3093bde7"

$ zcli wallets 
[
    "0xde03a0b5963f75f1c8485b355ff6d30f3093bde7",
    "0xab9fc101e0958669c92d71855f41aa5c949e5d8e",
    "0xdb850fd6dd80f0f689f2f4671a003c99ed73cd49"
]

$ zcli account 0xde03a0b5963f75f1c8485b355ff6d30f3093bde7
{
    "address": "0xde03a0b5963f75f1c8485b355ff6d30f3093bde7",
    "network": "localhost",
    "account_id": 0,
    "nonce": 0,
    "balances": {
        "ETH": "0.0004132"
    }
}

$ zcli deposit 1000 ETH 0x52312AD6f01657413b2eaE9287f6B9ADaD93D5FE --fast
"0x39e8a769a1be699c01afad650f3d5ff3c570bb805a9c7b23177080cff35c8ae5"

$ zcli transaction 0x39e8a769a1be699c01afad650f3d5ff3c570bb805a9c7b23177080cff35c8ae5
{
    "network": "localhost",
    "transaction": {
        "status": "success",
        "from": "0xde03a0b5963f75f1c8485b355ff6d30f3093bde7",
        "to": "0x52312ad6f01657413b2eae9287f6b9adad93d5fe",
        "hash": "0x39e8a769a1be699c01afad650f3d5ff3c570bb805a9c7b23177080cff35c8ae5",
        "operation": "Deposit",
        "nonce": -1,
        "amount": "1000.0",
        "token": "ETH"
    }
}

$ zcli account 0x52312AD6f01657413b2eaE9287f6B9ADaD93D5FE
{
    "address": "0x52312AD6f01657413b2eaE9287f6B9ADaD93D5FE",
    "network": "localhost",
    "account_id": 1,
    "nonce": 5,
    "balances": {
        "ETH": "2994.9995868"
    }
} #原先有抵押過了

$ zcli transfer 2 ETH 0xdB850fD6DD80f0F689F2f4671A003c99ed73cD49

...

0xde03a0B5963f75f1C8485B355fF6D30f3093BDE7為dev.env文件中有L2給 geth1 發(fā)交易的地址,私鑰也在配置文件中顿肺。

大家可以按照提示使用zcli來向zksync發(fā)送交易戏溺,查詢交易等操作渣蜗。

日拱一卒!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末旷祸,一起剝皮案震驚了整個濱河市耕拷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌托享,老刑警劉巖骚烧,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異闰围,居然都是意外死亡赃绊,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門羡榴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凭戴,“玉大人,你說我怎么就攤上這事炕矮∶捶颍” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵肤视,是天一觀的道長档痪。 經(jīng)常有香客問我,道長邢滑,這世上最難降的妖魔是什么腐螟? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮困后,結(jié)果婚禮上乐纸,老公的妹妹穿的比我還像新娘。我一直安慰自己摇予,他們只是感情好汽绢,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著侧戴,像睡著了一般宁昭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上酗宋,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天积仗,我揣著相機與錄音,去河邊找鬼蜕猫。 笑死寂曹,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播隆圆,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼芬失,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了匾灶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤租漂,失蹤者是張志新(化名)和其女友劉穎阶女,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哩治,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡秃踩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了业筏。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片憔杨。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蒜胖,靈堂內(nèi)的尸體忽然破棺而出消别,到底是詐尸還是另有隱情,我是刑警寧澤台谢,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布寻狂,位于F島的核電站,受9級特大地震影響朋沮,放射性物質(zhì)發(fā)生泄漏蛇券。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一樊拓、第九天 我趴在偏房一處隱蔽的房頂上張望纠亚。 院中可真熱鬧,春花似錦筋夏、人聲如沸蒂胞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啤誊。三九已至,卻和暖如春拥娄,著一層夾襖步出監(jiān)牢的瞬間蚊锹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工稚瘾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留牡昆,地道東北人。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像丢烘,于是被迫代替她去往敵國和親柱宦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容