Wasm合约测试网Jupiter已发布平行链版本
概述
Overview
三个区块链网络的关键配置基本相同,例如合约计费,区块资源大小等。具体的配置详见下文的 Jupiter 网络板块。Jupiter 的项目地址是:https://github.com/patractlabs/jupiter。
接下来主要以第三个网络 jupiter 为主介绍相关内容。
正常编译后,在编译产物目录中将会出现可执行性文件 jupiter 。 jupiter 网络对应的节点实现是:
目录 bin/node:平行链测试网模式,采用 Aura 验证人,支持合约部署,调用。
目录 runtime/jupiter。
注:针对第三种平行链模式,由于目前中继链(比如 Westend)不支持 Sandbox HostFunction,我们自己运行了一个支持 Sandbox HostFunction 的 Westend 测试网来运行 Jupiter 平行链。后续一旦中继链支持了 Sandbox HostFunction,Jupiter 平行链会切换到官方的 Westend 上。
ChangeLog
1.0.0: Jupiter PoA 网络正式发布,包含jupiter-prep 及 jupiter-dev。
1.0.1: 设置 Jupiter PoA 的 ss58prefix 为 26,今后Jupiter沿用 26 作为地址的 ss58prefix。
1.0.2: 支持 ZK、随机数。
1.0.3: 增加平行链。
Contract
Patract 的 FRAME contracts pallet,我们将来会将它命名为 pallet-patracts。当前合约使用官方的 pallet-contracts,未来我们会迁移到自己的合约模块上。
ChainExtension
[ ] 支持合约日志,参考连接:ink-log (https://github.com/patractlabs/ink-log) [x] 支持 Zero-Knowledge,参考连接:PIP-101 (https://github.com/patractlabs/PIPs/blob/main/PIPs/pip-101.md)
pallet-patracts
目前暂时没有新特性
src pallet-contract:Substrate 官方的 pallet-contract 模块。
modified pallet-contracts:Patract 从官方 fork 出来的修改,位于 vendor 目录下。
src pallet-contract:支持 Patract 的 ChainExtension。 modified pallet-contracts:支持 Patract 的 ChainExtension,以及 Patract 对 pallet-contract 的修改。
注1:Patract 集成合约模块,可以参考 patracts(https://github.com/patractlabs/patracts) 注2:Zero-Knowledge 的相关文档也可以参考:zkmega。(https://docs.patract.io/zkmega/tutorial.html)
编译
Compile
编译
git clone --recurse-submodules https://github.com/patractlabs/jupiter.git
cd jupiter
cargo build --release
target/release/jupiter
运行
Jupiter
./jupiter --chain ./jupiter-westend-098.json --execution wasm --wasm-execution=compiled --force-authoring --parachain-id=2000 --tmp \--chain ./westend-098.json --no-beefy --execution wasm --wasm-execution=compiled --tmp \--bootnodes /dns/ws.patract-westend.patract.cn/tcp/30333/p2p/12D3KooWQYyBaNrh9QdvernDFUTapHQTD95S9a6CvSPKXVvCeWx2
注:如果需要在本地进行测试,可以修改 Jupiter-dev(https://github.com/patractlabs/jupiter/blob/master/bin/node/cli/src/command.rs#L28-L31),并参考这里的运行步骤(https://github.com/patractlabs/jupiter/blob/master/README.md#421-start-local-test-mode-jupiter-parachain)。
Jupiter 网络
Jupiter Network
Jupiter 公共配置
1.frame_system::Config 中的配置都是相同的,因此三个网络的区块资源及资源配置都是相同的。
2.pallet_balance::Config中的 ExistentialDeposit 都是 0,因此产生一个新账户或者一个新合约不需要为了这个账户/合约的存活而付押金。
3.pallet_contracts::Config 中的配置主要如下:
与存储租赁相关的配置都设置为0,如 TombstoneDeposit,DepositPerContract,DepositPerStorageByt,RentFraction 等。
CallStack 的配置都是32层, 因此合约调合约最大的执行栈相同。
与合约销毁的延迟删除的配置都相同。
合约的 Schedule 配置都相同,均直接采用了默认配置。注意这个配置中的 code_len 即合约的最大大小为 128k。
ChainExtension 的配置会由于每个网络的特性及功能支持程度存在不同。
Jupiter 网络的特性及配置
Jupiter 平行链采用的是 Aura 平行链收集人选择算法,对应的测试网为 Jupiter PC1,可以部署在任何基于 Polkadot 的中继链网络上。
polkadot.js 的 Extending types
Jupiter 的开发者扩展类型如下:
{
"LookupSource": "MultiAddress",
"Address": "MultiAddress",
"AccountInfo": "AccountInfoWithTripleRefCount",
"AliveContractInfo": {
"trieId": "TrieId",
"storageSize": "u32",
"pairCount": "u32",
"codeHash": "CodeHash",
"rentAllowance": "Balance",
"rentPayed": "Balance",
"deductBlock": "BlockNumber",
"lastWrite": "Option<BlockNumber>",
"_reserved": "Option<Null>"
},
"BabeRandomness": {
"epoch": "u64",
"start_slot": "u64",
"duration": "u64",
"randomness": "schnorrkel::Randomness"
}
}
wss://ws.patract-westend.patract.cn
wss://ws.jupiter.patract-westend.patract.cn
ChainExtensions
合约
Contract
合约
当前 Jupiter PoA 测试网 和 Jupiter 部署的合约有:
稳定币:USDT、jBTC、jETH
patramaker:DAI
patrapixel
patraswap
合约的具体实现,可以参考项目:store-contracts(https://github.com/patractlabs/store-contracts),部署工具采用 Redspot(https://github.com/patractlabs/redspot)。
网络切换
当前 Jupiter PoA 和 Jupiter 分为不同的网络,一个是独立的测试网,一个是平行链版本,除此之外,其他功能和操作都一样。Jupiter PoA 的首页登录(https://patrastore.io/#/jupiter-a1),从 Jupiter PoA 切换网络到 Jupiter:
水龙头
点击「账户」——「Faucet」领取测试币:
About Patract
Patract为波卡Wasm合约生态的平行链和DApp开发提供解决方案。我们帮助社区平行链设计和开发链上合约模块和Runtime支持,并且为DApp开发者提供覆盖开发、测试、调试、部署、监控、数据提供和前端开发等阶段的全栈工具和服务支持。
How to join Patract
1.对于合约开发者,可以访问官网(https://patract.io),熟悉测试链和工具套件。欢迎加入官方开发群:
Element(https://app.element.io/#/room/#PatractLabsDev:matrix.org)
Discord(https://discord.gg/wJ8TnTfjcq)
2.对于将要集成Wasm合约功能的平行链项目方,或者使用Wasm合约开发的DApp项目方,欢迎加入Patract 开放平台:https://open.patract.io
3.对于用户,欢迎加入:
Telegram(https://t.me/patract)
Twitter(https://twitter.com/PatractLabs)
4.对于求职者,我们在招聘区块链开发工程师、前端/全栈开发工程师、云平台架构师、数据产品经理、产品经理等岗位,可以联系 sean@patract.io