Я полный новичок в Solidity, и я хочу знать, могу ли я использовать свою функцию set для инициализации членов моей структуры, а также для присвоения значения переменной состояния:
pragma solidity ^0.4.21;
contract Govtcontract {
uint256 public allocbudget;
uint256 public rembudget;
struct transaction{
uint expend;
uint dept;
string item;
uint date;
string location;
}
transaction public trx;
constructor (uint256 initbudget) public {
allocbudget = initbudget;
rembudget = initbudget;
}
function settx(uint amt, uint dep, string thing, uint date, string loc) public {
trx.expend=amt;
trx.dept=dep;
trx.item=thing;
trx.date=date;
trx.location=loc;
rembudget = rembudget - trx.expend;
}
function get() public constant returns (uint) {
return rembudget;
}
}
Кроме того, как мне написать файл web3.js, чтобы принимать несколько входных данных для set()? Кажется, я не могу найти какие-либо ресурсы в Интернете. ТИА!
Да, ты можешь! Вы можете проверить это с помощью Truffle:
truffle init
и добавьте свой контракт и файл развертыванияtruffle develop
compile
migrate
Govtcontract.deployed().then(instance => govt = instance.contract)
govt.settx(1000, 1000, "test", 1000, "test", { gas: 500000 })
Я произвольно установил 500 000, потому что хранение такого количества переменных в одном пакете недешево с точки зрения затрат на газ.
При желании вы можете попробовать Remix или EthFiddle для составления контракта.