外部怎么调用eth智能合约的public变量,public方法

调用public变量:eth.call方法,非交易型方法, 不创建交易,不消耗gas

// 调用合约0x8c0ee7e23af6226cbf264f209ed20d8517545202中的totalExchange变量

// 创建合约实例
var MyContract = web3.eth.contract(abiArray);
var contractInstance = MyContract.at("0x8c0ee7e23af6226cbf264f209ed20d8517545202");

// 获取变量sha值  
var dataHash = contractInstance.totalExchange.getData().substring(0, 10);  
// 用call方法获取
var totalExchangeVal = web3.eth.call({
	to: subChainAddress,  // 合约地址
	data: dataHash   // "0xb8697fe2"
}, 'latest');

调用合约public方法(1. 直接调用如下  2. eth.call方法如上)

// 调用合约0x8c0ee7e23af6226cbf264f209ed20d8517545202中的getBoardlist(uint status)方法

// 创建合约实例
var MyContract = web3.eth.contract(abiArray);
var contractInstance = MyContract.at("0x8c0ee7e23af6226cbf264f209ed20d8517545202");  // 直接调用,传参1
contractInstance.getBoardlist(1,function(err, result){
	console.log(result);
});

调用合约的交易方法:需要发送交易,消耗gas的,用sendRawTransaction,交易的data还是要通过合约实例调用方方法getData(),例如 data = contractInstance.sellMintToken.getData(amount);

 可参考:http://web3.tryblockchain.org/Web3.js-api-refrence.html#toc_46

 

在VS Code中编写Solidity智能合约,我们可以创建一个简单的计数器合约,以下是一个基础示例: ```solidity pragma solidity ^0.8.0; // 使用的是以太坊最新版本的Solidity // 定义一个名为Counter的合约 contract Counter { // 私有状态变量,初始值为0 private uint privateCount; // 构造函数设置初始值 constructor() public { privateCount = 0; } // 自增方法 function increment() internal { privateCount++; } // 自减方法 function decrement() internal { privateCount--; } // 公共读取变量方法 function getCount() public view returns (uint) { return privateCount; } } ``` 在这个例子中,我们定义了一个`Counter`合约,其中包含一个私有整型变量`privateCount`,用于存储计数值。通过构造函数初始化计数。`increment()`和`decrement()`方法用于内部修改计数,因为它们是`internal`的,所以只能由合约自身调用。而`getCount()`方法是公开的`view`方法,可以安全地从外部查询计数。 为了在VS Code中编译并部署这个合约,你需要安装 Solidity 插件,然后按照以下步骤操作: 1. 创建一个新的 Solidity 文件,粘贴上面的代码。 2. 在插件的“编译”功能中选择合约,它会生成abi和bin文件。 3. 将ABI(抽象描述符接口)和bin(字节码)上传到以太坊网络,比如通过MetaMask或truffle等工具。 4. 部署合约至测试网(如Ropsten或Kovan),或者主网(需要足够的ETH)。 **相关问题--:** 1. 如何在VS Code中安装Solidity插件? 2. 如何在测试网络上部署合约? 3. 除了MetaMask,还有哪些工具可用于合约部署?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值