使用 Browser-Solidity 在 Go-Ethereum 1.7.2 上部署简单智能合约的完整指南


1. 退
2....
3. vip
4. /


1.
2.使
3.
4.
5.使24
6.
7.aliyun6168@gail.com / aliyun666888@gail.com
8.100%


1.(//)-50-200RMB
2.
3.
4.
5.便
6.VIP -
7.VIP -
8.123456

在以太坊区块链上部署智能合约是区块链开发的重要环节。本文将介绍如何使用 **Browser-Solidity(即 Remix IDE 的本地版本)** 在 **Go-Ethereum 1.7.2(geth)** 上部署一个简单的智能合约。尽管 Go-Ethereum 1.7.2 是一个较老版本,但其架构和部署流程仍具有学习和参考价值,尤其适用于私有链或测试环境下的智能合约开发。

### 一、环境准备

#### 1. 安装 Go-Ethereum 1.7.2
Go-Ethereum(简称 geth)是以太坊官方客户端。你可以通过源码编译或下载对应版本的二进制文件安装 geth 1.7.2。

– 官方 GitHub 地址:https://github.com/ethereum/go-ethereum
– 切换到 1.7.2 tag:
“`bash
git checkout tags/v1.7.2
go install
“`

#### 2. 启动私有链节点
创建一个创世文件 `genesis.json`,内容如下:
“`json
{
“config”: {
“chainId”: 1234,
“homesteadBlock”: 0,
“eip155Block”: 0,
“eip158Block”: 0
},
“difficulty”: “200”,
“gasLimit”: “9999999”,
“alloc”: {}
}
“`

初始化私有链:
“`bash
geth –datadir ./chaindata init genesis.json
“`

启动节点:
“`bash
geth –datadir ./chaindata –networkid 1234 –http –http.addr 0.0.0.0 –http.port 8545 –http.api “eth,net,web3,personal” –http.corsdomain “*” –nodiscover –allow-insecure-unlock –http.vhosts “*”
“`

创建账户并解锁:
“`bash
geth –datadir ./chaindata account new
geth –datadir ./chaindata –unlock “账户地址” –password <(echo -n “密码”)
“`

### 二、使用 Browser-Solidity 编写智能合约

Browser-Solidity 是 Remix IDE 的本地版本,适合在本地环境中使用。

1. 下载并运行 Browser-Solidity:
“`bash
git clone https://github.com/ethereum/browser-solidity.git
cd browser-solidity
python -m SimpleHTTPServer 8080
“`

2. 打开浏览器访问:http://localhost:8080

3. 编写一个简单的 Solidity 合约,例如:
“`solidity
pragma solidity ^0.4.24;

contract SimpleStorage {
uint storedData;

function set(uint x) public {
storedData = x;
}

function get() public view returns (uint) {
return storedData;
}
}
“`

4. 编译合约,选择合适的编译器版本(如 v0.4.24+commit.e67f0147)

### 三、部署智能合约到 Go-Ethereum 节点

1. 在 Browser-Solidity 界面中切换至 **”Web3 Provider”** 模式。
2. 输入本地节点的 RPC 地址:`http://localhost:8545`
3. 选择已解锁的账户进行部署。
4. 点击 **”Deploy”** 按钮,合约将被部署到你的私有链上。

部署成功后,你将获得合约地址和交易哈希。

### 四、验证合约部署与调用

1. 使用 geth 控制台连接节点:
“`bash
geth attach http://localhost:8545
“`

2. 查询合约是否部署成功:
“`javascript
eth.getCode(“合约地址”)
“`

如果返回非 “0x”,说明合约已成功部署。

3. 调用合约方法:
“`javascript
var abi = [合约ABI];
var contract = web3.eth.contract(abi).at(“合约地址”);
contract.set.sendTransaction(123, {from: “账户地址”, gas: 300000});
contract.get.call();
“`

### 五、常见问题与注意事项

– **版本兼容性问题**:Browser-Solidity 使用的是较旧版本的 Solidity 编译器,需注意与合约代码的兼容性。
– **Gas 不足**:确保账户中有足够的 Ether 用于支付 Gas。
– **跨域问题(CORS)**:确保 geth 启动时设置了 `–http.corsdomain “*”`。
– **账户解锁**:使用 `–unlock` 和 `–password` 参数解锁账户,或在控制台中手动解锁。

### 六、结语

通过本文的步骤,开发者可以使用 Browser-Solidity 在 Go-Ethereum 1.7.2 上完成智能合约的编写、编译与部署。虽然当前主流开发工具已更新至 Remix IDE 和 Hardhat 等更现代的框架,但理解旧版本的工作流程对于掌握以太坊底层机制仍然具有重要意义。

相关文章