> For the complete documentation index, see [llms.txt](https://zenofchain.gitbook.io/sei-zhong-wen-wen-dang-sei-docs-chnby-chainguys/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://zenofchain.gitbook.io/sei-zhong-wen-wen-dang-sei-docs-chnby-chainguys/zhi-neng-he-yue-he-ben-di-kai-fa-smart-contracts-local-development/bu-shu-tong-yong-he-yue-deployageneric-contract.md).

# 部署通用合约 (Deploy a generic contract)

If you have your own chain running already ([see instruction here](https://docs.seinetwork.io/smart-contracts-and-local-development/set-up-a-local-network)), the following steps show how to upload your contract to that chain. Sei is a permissioned network, which means that only wasm contracts which are voted on by governance can be deployed to the chain.

如果您已经有自己的链在运行（[参见此处的说明](https://docs.seinetwork.io/smart-contracts-and-local-development/set-up-a-local-network)），请执行以下展示如何将您合约上传到该链步骤。 Sei 是一个许可网络，这意味着只有经过治理投票的 wasm 合约才能部署到链上。

### 1.构建 Cosmwasm 合约 (1.Build Cosmwasm contract)

Build the image. Note that the following steps are run from your contract directory, so they assume seid is in your $PATH:

构建图像。请注意，以下步骤是从您的合约目录运行的，因此它们假定 seid 在您的 $PATH 中：

```
cargo build
```

```
docker run --rm -v "$(pwd)":/code --mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target --mount type=volume,source=registry_cache,target=/usr/local/cargo/registry cosmwasm/rust-optimizer:0.12.5
```

### 2.上传合约的治理提案 (2.Governance Proposal to Upload a Contract)

**Note that on local sei you can skip steps 2 and 3, and directly store the wasm contract like the following:**

**请注意，在本地 sei 上，您可以跳过第 2 步和第 3 步，直接存储 wasm 合约，如下所示：**

```
seid tx wasm store $CONTRACT_WASM_BINARY -y --from=$ACCOUNT_NAME --chain-id=$CHAIN_ID --gas=10000000 --fees=10000000usei --broadcast-mode=block
```

Go back to **sei-chain repo**, and submit a governance proposal to upload the wasm contract.

返回 **sei-chain repo**，并提交治理提案以上传 wasm 合约。

```
seid tx gov submit-proposal wasm-store artifacts/$CONTRACTNAME.wasm \

--from $(seid keys show -a $ACCOUNT_NAME) \

--run-as $(seid keys show -a $ACCOUNT_NAME) \

--title "<Enter title proposal title for uploading of wasm contract>" \

--description "<Enter description of proposal and contract>" \

--chain-id sei-chain \

--instantiate-everybody "false" \

--instantiate-only-address $(seid keys show -a $ACCOUNT_NAME) \

--broadcast-mode=block \

--gas=500000 \

--fees=10000000usei
```

Reference <https://docs.cosmwasm.com/tutorials/governance/#submit-proposal> for more details on each of the flags and details about contract instantiation/execution.

参考 <https://docs.cosmwasm.com/tutorials/governance/#submit-proposal> 了解有关每个标志和有关合约实例化/执行的详细信息。

### 3.对治理提案进行投票 (3.Voting on the Governance Proposal)

Once the governance proposal has been submitted, it must be approved by governance. Find the proposal id and vote on it

治理提案一经提交，必须得到治理层的批准。找到提案 id 并对其进行投票

```
seid tx gov vote [proposal-id] yes --from $ACCOUNT_NAME
```

### 4.实例化合约 (4.Instantiating contract)

Once your proposal is approved, you can instantiate your contract.

一旦您的提案获得批准，您就可以实例化您的合约。

Note in this example the $CONTRACT\_ID is 1 and $LABEL is any contract name you want:

注意在这个例子中 $CONTRACT\_ID 是 1 并且 $LABEL 是你想要的任何合约名称：

```
seid tx wasm instantiate $CONTRACT_ID '{}' --chain-id sei-chain --from $ACCOUNT_NAME --gas=4000000 --fees=1000000usei --broadcast-mode=block --label $LABEL --no-admin
```

Note that the `'{}'` part is the parameters you pass to instantiate the contract. In this example, the contract takes no parameter so `'{}'` suffices. For any real world contracts, their instantiation parameters would likely be non-empty. For example, to instantiate Vortex contract, the following parameters need to be used instead (the actual values need/can be changed though):

请注意，`'{}'` 部分是您传递的实例化合约的参数。在这个例子中，合约没有参数，所以 ''{}'' 就足够了。对于任何现实世界的合约，它们的实例化参数都可能是非空的。例如，要实例化 Vortex 合约，需要使用以下参数（但实际值需要/可以更改）：

```
{"whitelist": ["sei1h9yjz89tl0dl6zu65dpxcqnxfhq60wxx8s5kag"],"use_whitelist":false,"admin":"sei1h9yjz89tl0dl6zu65dpxcqnxfhq60wxx8s5kag","limit_order_fee":{"decimal":"0.0001","negative":false},"market_order_fee":{"decimal":"0.0001","negative":false},"liquidation_order_fee":{"decimal":"0.0001","negative":false}}
```

You should get a response like the following:

您应该得到如下响应：

```
height: "2051"

info: ""

logs:

- events:

- attributes:

- key: _contract_address

value: sei1wug8sewp6cedgkmrmvhl3lf3tulagm9hnvy8p0rppz9yjw0g4wtqdxfzff

- key: code_id

value: "1"

type: instantiate

- attributes:

- key: action

value: /cosmwasm.wasm.v1.MsgInstantiateContract

- key: module

value: wasm

- key: sender

value: cosmos1ep9jyk9kydjz0fhadm7rzy6pc9ga7tdt4d26xn

type: message

log: ""

msg_index: 0

raw_log: '[{"events":[{"type":"instantiate","attributes":[{"key":"_contract_address","value":"cosmos1wug8sewp6cedgkmrmvhl3lf3tulagm9hnvy8p0rppz9yjw0g4wtqdxfzff"},{"key":"code_id","value":"2"}]},{"type":"message","attributes":[{"key":"action","value":"/cosmwasm.wasm.v1.MsgInstantiateContract"},{"key":"module","value":"wasm"},{"key":"sender","value":"cosmos1ep9jyk9kydjz0fhadm7rzy6pc9ga7tdt4d26xn"}]}]}]'

timestamp: ""

tx: null

txhash: 3033A3673367169693157DF4D22D973A012C03A4FBE452E994E4DE87C8628D23
```

From the output, you can see that your contract was created at address: `sei1wug8sewp6cedgkmrmvhl3lf3tulagm9hnvy8p0rppz9yjw0g4wtqdxfzff`. You will need this address for any contract interaction.

从输出中，你可以看到你的合约是在下面地址创建的：`sei1wug8sewp6cedgkmrmvhl3lf3tulagm9hnvy8p0rppz9yjw0g4wtqdxfzff`。您将需要在此地址进行任何合约交互。

### 5.执行合约 (5.Execute contract)

In this example, we send a `UpdatePrice` message to update the `price` of a token on this oracle contract.

在此示例中，我们发送一条“UpdatePrice”消息来更新此预言机合约上代币的“价格”。

```
{

"update_price": {

"price": "22",

"token_addr": "cosmos16fz9ma2thw3vycca0v9qkezgecusgzza8027z4"

  }

}
```

```
seid tx wasm execute $CONTRACT_ADDR '{"update_price": {"price": "22", "token_addr": "$TOKEN_ADDR"}}' --from $ACCOUNT_NAME --gas=4000000 --fees=1000000usei --chain-id sei-chain --broadcast-mode block
```

### 6.查询合约 (6.Query contract)

In this example, we send a `GetPrice` message to get the `price` of a token on this oracle contract.

在这个例子中，我们发送一个“GetPrice”消息来获取这个预言机合约上一个代币的“价格”。

```
{

"get_price15": {

"token_addr": "cosmos16fz9ma2thw3vycca0v9qkezgecusgzza8027z4"

}

}

seid query wasm contract-state smart $CONTRACT_ADDR '{"get_price15": {"token_addr": "#TOKEN_ADDR"}}'
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://zenofchain.gitbook.io/sei-zhong-wen-wen-dang-sei-docs-chnby-chainguys/zhi-neng-he-yue-he-ben-di-kai-fa-smart-contracts-local-development/bu-shu-tong-yong-he-yue-deployageneric-contract.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
