在百度超级链上部署 Solidity 合约

时之世 发布于 2024-12-09 307 次阅读 预计阅读时间: 2 分钟 最后更新于 2024-12-20 506 字 无~


AI 摘要

**在百度超级链上部署 Solidity 合约** 本文介绍了如何在部署了 XuperChain 的环境下,通过百度超级链来部署 Solidity 合约。以下是具体步骤: 1. **启动 XuperChain** 参照 XuperChain 官方文档进行环境部署,启动 XuperChain 。 2. **创建合约账户并转账** 根据官网教程创建合约账户,并将一定金额转账给合约账户,为合约部署做准备。示例命令: ``` ./bin/xchain-cli transfer --from TeyyPLpp9L7QAcxHangtcHTu7HUZ6iydY --to XC1111111111111111@xuper --amount 1000000000 ``` 3. **编译合约** 使用 Solidity 编译器编译 Solidity 合约,并指定输出目录。命令如下: ``` solc --bin --abi VoteTest_a.sol --output-dir binVote ``` 4. **部署合约** 输入合约的初始化数据,使用命令部署合约: ``` ./bin/xchain-cli evm deploy --account XC1111111111111111@xuper --cname vote_12_9 --fee 5200000 ./solidity/binVote/vote.bin --abi ./solidity/binVote/vote.abi -a '{"_creator":"H4sIAAAAAAAAAHXBwRFCMQgFwHZ0JgfIAwLlhAT6L+Ef9Ki7L+AYL40jNsvmukdkq3lr5l3CoqHVu3Vy5exSqKAKhMViiKEuewk8KnzazuhO85wkpujLtMRDkVZQz0DwPlzR9zq4jAaP/qIPpj/6t/N+AO8tTQvGAAAA","_title":"test","_description":"testVote"}' ``` 若输出提示 XuperChain 没有启动,则需检查启动状态或重新启动服务。 最后,验证 XuperChain 是否已正确启动,输出应为区块链状态信息。 以上步骤为在百度超级链上部署 Solidity 合约的完整流程。

百度开源了 百度超级链 的核心 XuperChain ,所以能用 XuperChain 来在自己的电脑或服务器上部署区块链和区块链应用。

这里具体说明在部署了 XuperChain 的情况下,如何部署 Solidity 合约。


一 首先启动 XuperChain ,这里官网的教程已经很详细了

1. 环境部署 — XuperChain 官方文档 5.3 文档

二 根据官网教程创建合约账户,并给合约账户转账 (部署合约需要)

./bin/xchain-cli transfer --from TeyyPLpp9L7QAcxHangtcHTu7HUZ6iydY --to XC1111111111111111@xuper --amount 1000000000

这里的 TeyyPLpp9L7QAcxHangtcHTu7HUZ6iydYxuperchain-5.4.0/output/data/keys 文件夹里的 address 文件,既用户地址信息

三 编译合约

编译合约可以指定输出目录

solc --bin --abi VoteTest_a.sol --output-dir binVote

这里编译后的 binabi 文件就会出现在 binVote 文件夹下

四 部署合约

部署合约可以输入初始化数据 (一些合约需要)

./bin/xchain-cli evm deploy --account XC1111111111111111@xuper --cname vote_12_9 --fee 5200000 ./solidity/binVote/vote.bin --abi ./solidity/binVote/vote.abi -a '{"_creator":"H4sIAAAAAAAAAHXBwRFCMQgFwHZ0JgfIAwLlhAT6L+Ef9Ki7L+AYL40jNsvmukdkq3lr5l3CoqHVu3Vy5exSqKAKhMViiKEuewk8KnzazuhO85wkpujLtMRDkVZQz0DwPlzR9zq4jAaP/qIPpj/6t/N+AO8tTQvGAAAA","_title":"test","_description":"testVote"}'
--account指定合约用户 (能部署合约)
--cname说明部署合约后的名字 (各种 JDK 也是用它来调用)
--fee说明部署费用
--abi指定 abi 文件
-a指定的参数 (json 格式)

如果输出为

说明 XuperChain 没有启动,需要查看启动状态或重启

[root@iZbp14eggp7jy5nocign0yZ output]# bash control.sh start
/www/wwwroot/xchain/xuperchain-5.4.0/output/bin/xchain
/www/wwwroot/xchain/xuperchain-5.4.0/output/conf/env.yaml
start xchain. cmd:nohup /www/wwwroot/xchain/xuperchain-5.4.0/output/bin/xchain startup --conf /www/wwwroot/xchain/xuperchain-5.4.0/output/conf/env.yaml >/www/wwwroot/xchain/xuperchain-5.4.0/output/logs/nohup.out 2>&1 &
.start proc succ.
start finish.pid:12623
Done!
[root@iZbp14eggp7jy5nocign0yZ output]# bin/xchain-cli status -H 127.0.0.1:37101
{
  "blockchains": [
    {
      "name": "xuper",
      "ledger": {
        "rootBlockid": "d93c260ea5639a55e1fcad3df494495efad5c65d46e846b6db3a9194a4212886",
        "tipBlockid": "183e4bbbdb1eaf18bdc19ad6bde1d44192171accd0969fe7061779591c5d3098",
        "trunkHeight": 852092
      },
      "utxo": {
        "latestBlockid": "183e4bbbdb1eaf18bdc19ad6bde1d44192171accd0969fe7061779591c5d3098",
        "lockKeyList": null,
        "utxoTotal": "100000000852092000000",
        "avgDelay": 0,
        "unconfirmed": 0,
        "maxBlockSize": 134217728,
        "reservedContracts": [],
        "forbiddenContract": {
          "moduleName": "",
          "contractName": "",
          "methodName": "",
          "args": {},
          "resource_limits": null
        },
        "newAccountResourceAmount": 1000,
        "irreversibleBlockHeight": 0,
        "irreversibleSlideWindow": 0,
        "gasPrice": {
          "cpu_rate": 1000,
          "mem_rate": 1000000,
          "disk_rate": 1,
          "xfee_rate": 1
        }
      },
      "branchBlockid": [
        "183e4bbbdb1eaf18bdc19ad6bde1d44192171accd0969fe7061779591c5d3098"
      ]
    }
  ],
  "peers": null,
  "speeds": {}
}

正确输出为

此作者没有提供个人介绍。
最后更新于 2024-12-20