gpt4 book ai didi

nearprotocol - 如何在 NEAR 协议(protocol)中构建和部署多个合约

转载 作者:行者123 更新时间:2023-12-03 21:10:29 24 4
gpt4 key购买 nike

目前cargo build生成一个 WASM 文件,如 contract/target/wasm32-unknown-unknown/release/hello.wasm .如果我的 contract 怎么能生成多个 wasm 二进制文件?源树包含多个合约,每个命名的 Rust 模块一个?
我的 Cargo.toml

[package]
name = "hello"
version = "0.1.0"
authors = ["Why so difficult <argh@example.com>"]
edition = "2018"

[lib]
crate-type = ["cdylib", "rlib"]

[dependencies]
near-sdk = "2.0.0"

[profile.release]
codegen-units = 1
# Tell `rustc` to optimize for small code size.
opt-level = "z"
lto = true
debug = false
panic = "abort"

[workspace]
members = []

最佳答案

是的。在撰写本文时,我们目前没有任何类似于 Truffle 的东西来部署多个合约。我们一直在将多个契约(Contract)组织到他们自己的目录中,然后使用父级 build-all.sh基本上运行目录的 build.sh 的脚本.
一个示例是此处的 Chainlink 存储库:
https://github.com/smartcontractkit/near-protocol-contracts
例如,三个合约之一(在本例中为 oracle)有自己的目录,其目录为 build.sh。脚本:

#!/bin/bash

cargo build --target wasm32-unknown-unknown --release
mkdir -p ./res
cp target/wasm32-unknown-unknown/release/oracle.wasm ./res

备注 : 在 NEAR 上构建智能合约时,您可能会看到 cargo build…具有比此处显示的更多标志的命令。在此特定示例中,这些标志已移至 .cargo/config文件:
[build]
rustflags = ["-C", "link-args=-s"]
这有助于实现跨平台兼容性,尤其是与 Windows 的兼容性。

然后在项目的父级有一个简单的 bash 脚本运行子脚本,如下所示:
#!/bin/bash

cd near-link-token && ./scripts/build && cd ..
cd oracle && ./scripts/build && cd ..
cd client && ./scripts/build && cd ..
我们确实期待 future 有更强大的部署机制。

关于nearprotocol - 如何在 NEAR 协议(protocol)中构建和部署多个合约,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64110056/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com