Mina Berkeley QANet测试网zkApp初体验
Posted mutourend
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mina Berkeley QANet测试网zkApp初体验相关的知识,希望对你有一定的参考价值。
1. 引言
Mina系列博客有:
- Mina概览
- Mina的支付流程
- Mina的zkApp
- Mina中的Pasta(Pallas和Vesta)曲线
- Mina中的Schnorr signature
- Mina中的Pickles SNARK
- Mina中的Kimchi SNARK
- Mina Kimchi SNARK 代码解析
Ubuntu 18.04:
$ echo "deb [trusted=yes] http://packages.o1test.net $(lsb_release -cs) unstable" | sudo tee /etc/apt/sources.list.d/mina-unstable.list
$ sudo apt-get update
# 安装Mina daemon
$ sudo apt-get install -y mina-berkeley=1.3.0beta1-release-2.0.0-ba9a0e0
# 安装Mina zkApp test transaction CLI
$ sudo apt-get install -y mina-snapp-test-transaction=1.3.0beta1-release-2.0.0-ba9a0e0
启动节点连接QANet测试网:
$ mina daemon --peer-list-url https://storage.googleapis.com/seed-lists/berkeley_seeds.txt
等待数分钟启动完毕后,确认所连接的网络正确:
$ mina client status
若为QANet,输出对应信息应有:
Chain id: da081e702d0e02be30a7351bc2a54898593bb67934b46809400af4c890d13c89
Git SHA-1: ba9a0e088b73a3c389550ee002ef0afc1ce3976d
同时mina client status
输出信息中还包含了节点连接状态信息:
Peers: 12
User_commands sent: 0
SNARK worker: None
SNARK work fee: 100000000
Sync status: Catchup
Sync status有3种状态:
- 1)Bootstrap:表示节点在启动中,需要与网络同步。【若该状态持续超过1小时,说明端口配置有误。】
- 2)Catchup:表示正在收集最新的区块和状态,以跟上最新区块。
- 3)Synced:且连接了1个或多个节点,表示已与网络成功连接,同时会看到日志
[Info] Mina daemon is now synced
。
通过mina-generate-keypair
离线生成key-pair文件:【若离线创建,需调用mina accounts import --privkey-path ~/.mina-config/wallets/store/B62qnHtHCf5ZJcwU5RqPCjZ31uFhSUSq8oHfxEVqMLC3JsxJFMxt3YS
导入账号。】【用作zkApp account】
$ mkdir ~/keys
$ chmod 700 ~/keys
$ mina-generate-keypair --privkey-path ~/keys/my-wallet
Password for new private key file:
Again to confirm:
Keypair generated
Public key: B62qpbnWwNdhjdmTCfLJMbJXnYDDqxdRNv2Hm7Be9pnLudF5vn7QTs1
Raw public key: B76070918E0322861C708B130CDC05E0BC76342D29F81D0C4B5765C17396959D
或与节点交互使用mina accounts create
生成账号:【用作fee payer】
$ mina accounts create
验证生成的账号公私钥匹配正确:
$ mina-validate-keypair --privkey-path ~/.mina-config/wallets/store/B62qnHtHCf5ZJcwU5RqPCjZ31uFhSUSq8oHfxEVqMLC3JsxJFMxt3YS
Enter password:
Again to confirm:
Public key on-disk is derivable from private key
Verified a transaction using specified keypair
获取测试token faucet为:
查看账号balance:
$ mina accounts list
Account #1:
Public key: B62qnHtHCf5ZJcwU5RqPCjZ31uFhSUSq8oHfxEVqMLC3JsxJFMxt3YS
Balance: 9
Locked: false
在浏览器中输入localhost:3085/graphql
可查看数据库信息。
主要测试点为:
1. Sync to the network with/without empty config directory
2. Successfully able to bootstrap to the latest state after restart
3. Create snapp accounts (using the new Snapps Test Transaction CLI)
4. Update various account fields using snapp transactions (using the new Snapps Test Transaction CLI)
5. Create non-snapp accounts using snapp transactions (using the new Snapps Test Transaction CLI)
6. Invalid transactions should be rejected (Some of the errors are insufficient funds, insufficient fees, insufficient replace fees, invalid sigantures, invalid proof, duplicates, and invalid nonce )
7. Valid transactions (snapp transactions or payments or delegations) should be added to the pool and included in a block
8. Snark work is added to the pool and included in blocks
9. Community block producers are producing blocks
10. Run archive nodes and verify that transactions (snapp transactions or otherwise) are archived
2. QANet zkApp
2.1 创建zkApp account
创建zkApp account并默认部署了一个测试合约:【等待一下】
$ mina-snapp-test-transaction create-snapp-account --fee-payer-key ~/.mina-config/wallets/store/B62qnHtHCf5ZJcwU5RqPCjZ31uFhSUSq8oHfxEVqMLC3JsxJFMxt3YS --nonce 0 --receiver-amount 2 --snapp-account-key ~/keys/my-wallet
Fee Payer keyfile
Private-key password:
Snapp Account keyfile
Private-key password:
Parties sexp:
((fee_payer
((data
((body
((public_key B62qnHtHCf5ZJcwU5RqPCjZ31uFhSUSq8oHfxEVqMLC3JsxJFMxt3YS)
(update
((app_state (Keep Keep Keep Keep Keep Keep Keep Keep))
(delegate Keep) (verification_key Keep) (permissions Keep)
(snapp_uri Keep) (token_symbol Keep) (timing Keep)
(voting_for Keep)))
(token_id ()) (balance_change 1000000000) (increment_nonce ())
(events ()) (sequence_events ())
(call_data
0x0000000000000000000000000000000000000000000000000000000000000000)
(call_depth 0)
(protocol_state
((snarked_ledger_hash Ignore) (snarked_next_available_token Ignore)
(timestamp Ignore) (blockchain_length Ignore)
(min_window_density Ignore) (last_vrf_output ())
(total_currency Ignore) (global_slot_since_hard_fork Ignore)
(global_slot_since_genesis Ignore)
(staking_epoch_data
((ledger ((hash Ignore) (total_currency Ignore))) (seed Ignore)
(start_checkpoint Ignore) (lock_checkpoint Ignore)
(epoch_length Ignore)))
(next_epoch_data
((ledger ((hash Ignore) (total_currency Ignore))) (seed Ignore)
(start_checkpoint Ignore) (lock_checkpoint Ignore)
(epoch_length Ignore)))))
(use_full_commitment ())))
(predicate 0)))
(authorization
(28052006975453738481673709016544502187442389375967276019072718319455928278179
26623709221580148274030598185192298348389441885057742821854529701731084268558))))
(other_parties
(((data
((body
((public_key B62qnHtHCf5ZJcwU5RqPCjZ31uFhSUSq8oHfxEVqMLC3JsxJFMxt3YS)
(update
((app_state (Keep Keep Keep Keep Keep Keep Keep Keep))
(delegate Keep) (verification_key Keep) (permissions Keep)
(snapp_uri Keep) (token_symbol Keep) (timing Keep)
(voting_for Keep)))
(token_id 1) (balance_change ((magnitude 2000000000) (sgn Neg)))
(increment_nonce true) (events ()) (sequence_events ())
(call_data
0x0000000000000000000000000000000000000000000000000000000000000000)
(call_depth 0)
(protocol_state
((snarked_ledger_hash Ignore) (snarked_next_available_token Ignore)
(timestamp Ignore) (blockchain_length Ignore)
(min_window_density Ignore) (last_vrf_output ())
(total_currency Ignore) (global_slot_since_hard_fork Ignore)
(global_slot_since_genesis Ignore)
(staking_epoch_data
((ledger ((hash Ignore) (total_currency Ignore))) (seed Ignore)
(start_checkpoint Ignore) (lock_checkpoint Ignore)
(epoch_length Ignore)))
(next_epoch_data
((ledger ((hash Ignore) (total_currency Ignore))) (seed Ignore)
(start_checkpoint Ignore) (lock_checkpoint Ignore)
(epoch_length Ignore)))))
(use_full_commitment false)))
(predicate (Nonce 1))))
(authorization
(Signature
(28075749332946891773497072892456352801671210886465141252943699666871500045551
22685197375128166970315064070324119281812483061382447927216467623179514459900))))
((data
((body
((public_key B62qpbnWwNdhjdmTCfLJMbJXnYDDqxdRNv2Hm7Be9pnLudF5vn7QTs1)
(update
((app_state (Keep Keep Keep Keep Keep Keep Keep Keep))
(delegate Keep)
(verification_key
(Set
((data
((step_data
((((h (Pow_2_roots_of_unity 11))) "\\000")
(((h (Pow_2_roots_of_unity 15))) "\\002")))
(max_width "\\002")
(wrap_index
((sigma_comm
((0x03E6F74604974125026E6BF1F5D7A8BF03F7A38CF383C76F71F2D3BA0CD2425E
0x0453D7C0206F66A514007CE5F8F6D9C1F7E1FB88A248114DF54E7267912CC646)
(0x2F914CF6CC47C382402268B2563A95E5BBB5B9C9C0173E02E08B312156D9218B
0x20734D06B89E769CF3DDA454D47991596882CC04E531416FBF72DE18DE4D640F)
(0x3329C25F9B8E06246210330888D67AA488E823D957665E1A2C8A5B449E3A9ADE
0x0EEC4DAEB098B38AE6656BE8CC1C3E09D53F13699549A523FAFFC94733ECE008)
(0x069269441D513EB721CB6B3DAB99771ECDF48B442255A65CCE2FBB94FB9BF01F
0x2C3D1296020B13EEBAFA7889DB5B46479B4C42B5ABB5BB721E84B60E43CCA392)
(0x296AED48B71DF2F5A54209842BB731192E768C12E8B2E40D2AD90A923C583894
0x3C8C7680D3BB372A857DFE60581744533472FEBADA7A0F008D0D954E8711A735)
(0x2FCAE156A0DBA0D0A8E7865E4E9BB64F836E0A0C48DC21741FFDB5523D69C4ED
0x14953614E912495C6FDB07B926E586FBCF179F47B2E4BA16E23DC371D71179D4)
(0x30C96C4B457D53A26E08A01E28E6AB063972293E3DE65481E87FDE68475B8519
0x05202151226E599AA746180F0FDD41688A547140A3DB8606BA681FB1313A7A23)))
(coefficients_comm
((0x20A0FF091C68794E9A33E5FC1E9DB13D47A5CFF1393C1AD0A85E59504247B105
0x30558379C0391CA01758B35B0E02F5E9C34781DCA6F3A155B7AEAD92E916695B)
(0x39AD151861052AF9E433BDA2491F47C02489EA0B1D7C0B5E0C54C7DF0FF51BD7
0x2F680136071F4BF84309FD8DE746046C92E2F58B938401B25C7657E0EBC532BB)
(0x2A3425E6C5798B6A0EA7F8510A10DC26BE4146BCB12BFA09B9C296752B02CDBC
0x2CB05578A2A794309BC385132ED4CE419440A81E245C14133E4C6373FC0C17DB)
(0x3190C58B5A798B53C50445EA38413AA6622C67A32B0AF369DFA828DE5F1BC0AE
0x0405BC9E256DBB9B2872F13C445348BA78F8A90BB80A84EEE659FD94BD338557)
(0x2E1C43BB10B5DFE8E2C452B3617D9E99EB442808D0690524AA7CF7D2A17EF263
0x2C6ECD5A4F1D0733344205BEA238BA74DAB5DB10C16C19583818C4284722C247)
(0x25306AF92E7F0A19A65679F6B83032EDC021DC648EC62170F95AEE4653002761
0x22C768A25EF3E974B9BF6F8054B00B5A3C3E5245CB512859A95C410F8A5EC7D2)
(0x27EA2D88BDD3A476C9F64B6A33412E29500487B66168680E730F1EE0FC8D5FB0
0x21703832A789148C0B63363F18F5DE845C1D396C7EB9A4193B086AF3EF326310)
(0x32C52B357BB3F96E8F1AFE00BDC3BCAA0EB91BFE108F8EFFABEEA89C254FAEDB
0x21B6B9E6ED32FDDEA824F6768962BDD510B9DEC5124FE1DAC81B06CD29CE5FC7)
(0x25F52CF19D770130114CA52B7A4DE22A41AE82DC0310563CE530EEABB2E1F88F
0x3AB5E46F00132E1D8EE84FB1D2FA0E3C5EBF98D2DD41B5AC96D4745B25159101)
(0x2692FCE3145FFDD4070D86128962C82B8095E383F649E359C90946ECF01475A1
0x05302B143308FAA0D29825EBA3FDE3504F7B07B2FBEB9F71D07B4DD8CEFAC857)
(0x3C4C00381D1E6516B2080856AA6644813B7CF9448E9D287933A8AA60EE0D81AF
0x1841074E36604023BEE1FECBD73E73E881D3708AD5CFE7457FB1C008D4BF230C)
(0x04EA36530A6F48B072354110C373A0A2C85AF5ED70B3A12E90104E9E2759F806
0x2BF191A0BABF1732DC795B43062B03B630C8728865B6DC999CFA5F2C1663666D)
(0x0C0EB6C0BFA88FA888AC6C30796B8587156C64896DC86CED27FAA98711E36145
0x1DF91F000182B4CABFC3FB8034F6AF0214104DCD254E61A57C61F4716AABDD93)
(0x118D95E70939C7CEE7F0253AA364BE2BE42E84C4628E3B2C917CA82DF1FA2B12
0x1F0E79D578C97E1682D8034CE8FC371807288F2A61DFF502F7825368F4E0EF6A)
(0x1D73E15F01D41F042C143626377C534502AB2B3895D99F842BDECC55EE6ADF6E
0x339931F0A89A6602ABC903958FB890FE80B45D44F5285B8D261C3139216E2A50)))
(generic_comm
(0x0540A55507F256649958CB7C44FA6649E44E1A2B418B2C7590CF00FFF15D6E66
0x3959BDCF4408470A08779EBAE171D9535C8D3804E4BB4B54A311F76DC296E6CA))
(psm_comm
(0x0B9D031E0C5FA09CB816C5B6BABF4CDC95F6B48B07C1306A0F5C66A56040BA07
0x0529F6902DA10168B8E70C1D1F394CCF127F22E1C9711F6B102E3685D4FA74B6))
(complete_add_comm
(0x2D2A743B4A3BAE45EBC1B29944BD4A5DDFEC30A45FC65703385CDE82F73061BC
0x1594CB038FB96186C721C98A8E40DA214617D77BBF9B752890A49728F4989EA2))
(mul_comm
(0x18EE4D312B799364FCB3412FBFCB3DD77D9009C71AEE1806ECF43E4EEF562175
0x1457B0AF38EC7FB0FB5378B4C63401CF3DC858EEE19AAA704BC26185FBFF8412))
(emul_comm
(0x1D854C230B28D1C30F8EA3BBF5A1788F6F6431E997E33FB8EF00D50D474989E6
0x0901F90BE59B17F57DD93561DDD986B4BD6B6EBB90F3AFA3BC263BCFCE9294F7))
(endomul_scalar_comm
(0x3E8078CD97BD1CC725F2C6503B10ECFBE8984FD0E2076BE63A5329B4369C7A33
0x224C0DB8755FD26EB98C82EE7EDAAD4309AAB09A2E36D34550D64C967782A628))))
(wrap_vk (<opaque>))))
(hash
0x24D49067A42141876B8BBB9FAEDD73CA6FAB336214C4355DA8A53E212759E8CC))))
(permissions
(Set
((stake true) (edit_state Proof) (send Signature) (receive None)
(set_delegate Signature) (set_permissions Signature)
(set_verification_key Signature) (set_snapp_uri Signature)
(edit_sequence_state Proof) (set_token_symbol Signature)
(increment_nonce Signature) (set_voting_for Signature))))
(snapp_uri Keep) (token_symbol Keep) (timing Keep)
(voting_for Keep)))
(token_id 1) (balance_change ((magnitude 2000000000) (sgn Pos)))
(increment_nonce false) (events ()) (sequence_events ())
(call_data
0x0000000000000000000000000000000000000000000000000000000000000000)
(call_depth 0)
(protocol_state
((snarked_ledger_hash Ignore) (snarked_next_available_token Ignore)
(timestamp Ignore) (blockchain_length Ignore)
(min_window_density Ignore) (last_vrf_output ())
(total_currency Ignore) (global_slot_since_hard_fork Ignore)
(global_slot_since_genesis Ignore)
(staking_epoch_data
((ledger ((hash Ignore) (total_currency Ignore))) (seed Ignore)
(start_checkpoint Ignore) (lock_checkpoint Ignore)
(epoch_length Ignore)))
(next_epoch_data
((ledger ((hash Ignore) (total_currency Ignore))) (seed Ignore)
(start_checkpoint Ignore) (lock_checkpoint Ignore)
(epoch_length Ignore)))))
(use_full_commitment true)))
(predicate Accept)))
(authorization
(Signature
(15014741606311249383893715699357981130027596928747178259210762790268363842120
19048023889487644491615716895692178500294368292398896178982363145567268832970))))))
(memo
"\\001\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000"))
Snapp transaction yojson:
"fee_payer":"data":"body":"public_key":"B62qnHtHCf5ZJcwU5RqPCjZ31uFhSUSq8oHfxEVqMLC3JsxJFMxt3YS","update":"app_state":[["Keep"],["Keep"],["Keep"],["Keep"],["Keep"],["Keep"],["Keep"],["Keep"]],"delegate":["Keep"],"verification_key":["Keep"],"permissions":["Keep"],"snapp_uri":["Keep"],"token_symbol":["Keep"],"timing":["Keep"],"voting_for":["Keep"],"token_id":null,"balance_change":"1","increment_nonce":null,"events":[],"sequence_events":[],"call_data":"0x0000000000000000000000000000000000000000000000000000000000000000","call_depth":0,"protocol_state":"snarked_ledger_hash":["Ignore"],"snarked_next_available_token":["Ignore"],"timestamp":["Ignore"],"blockchain_length":["Ignore"],"min_window_density":["Ignore"],"last_vrf_output":null,"total_currency":["Ignore"],"global_slot_since_hard_fork":["Ignore"],"global_slot_since_genesis":["Ignore"],"staking_epoch_data":"ledger":"hash":["Ignore"],"total_currency":["Ignore"],"seed":["Ignore"],"start_checkpoint":["Ignore"],"lock_checkpoint":["Ignore"],"epoch_length":["Ignore"],"next_epoch_data":"ledger":"hash":["Ignore"],"total_currency":["Ignore"],"seed":["Ignore"],"start_checkpoint":["Ignore"],"lock_checkpoint":["Ignore"],"epoch_length":["Ignore"],"use_full_commitment":null,"predicate":"0","authorization":"7mXKyMWrBBRYgDPMGvaMECbYibohsiXyH1WLzvrS2mHQNxrn1VQhdQx7b8UnsuP5GRQPdapnZMCxoAL2MTHwpNhAKGFdyZL4","other_parties":["data":"body":"public_key":"B62qnHtHCf5ZJcwU5RqPCjZ31uFhSUSq8oHfxEVqMLC3JsxJFMxt3YS","update":"app_state":[["Keep"],["Keep"],["Keep"],["Keep"],["Keep"],["Keep"],["Keep"],["Keep"]],"delegate":["Keep"],"verification_key":["Keep"],"permissions":["Keep"],"snapp_uri":["Keep"],"token_symbol":["Keep"],"timing":["Keep"],"voting_for":["Keep"],"token_id":"1","balance_change":"magnitude":"2000000000","sgn":["Neg"],"increment_nonce":true,"events":[],"sequence_events":[],"call_data":"0x0000000000000000000000000000000000000000000000000000000000000000","call_depth":0,"protocol_state":"snarked_ledger_hash":["Ignore"],"snarked_next_available_token":["Ignore"],"timestamp":["Ignore"],"blockchain_length":["Ignore"],"min_window_density":["Ignore"],"last_vrf_output":null,"total_currency":["Ignore"],"global_slot_since_hard_fork":["Ignore"],"global_slot_since_genesis":["Ignore"],"staking_epoch_data":"ledger":"hash":["Ignore"],"total_currency":["Ignore"],"seed":["Ignore"],"start_checkpoint":["Ignore"],"lock_checkpoint":["Ignore"],"epoch_length":["Ignore"],"next_epoch_data":"ledger":"hash":["Ignore"],"total_currency":["Ignore"],"seed":["Ignore"],"start_checkpoint":["Ignore"],"lock_checkpoint":["Ignore"],"epoch_length":["Ignore"],"use_full_commitment":false,"predicate":["Nonce","1"],"authorization":["Signature","7mXVvzSG9AqveRyqgnzB41NsvkgxMYUkwonm7PTdLxQFmbECVp7gsazSvrgeGeS2pRn4pLRBWUKEUPeSEtS1fT3TBbA9a7k9"],"data":"body":"public_key":"B62qpbnWwNdhjdmTCfLJMbJXnYDDqxdRNv2Hm7Be9pnLudF5vn7QTs1","update":"app_state":[["Keep"],["Keep"],["Keep"],["Keep"],["Keep"],["Keep"],["Keep"],["Keep"]],"delegate":["Keep"],"verification_key":["Set","data":"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","hash":"0x24D49067A42141876B8BBB9FAEDD73CA6FAB336214C4355DA8A53E212759E8CC"],"permissions":["Set","stake":true,"edit_state":["Proof"],"send":["Signature"],"receive":["None"],"set_delegate":["Signature"],"set_permissions":[以上是关于Mina Berkeley QANet测试网zkApp初体验的主要内容,如果未能解决你的问题,请参考以下文章
QANet: Combining Local Convolution With Global Self-Attention For Reading Comprehension