Установка переменных структуры

Я полный новичок в 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()? Кажется, я не могу найти какие-либо ресурсы в Интернете. ТИА!

Ответы (1)

Да, ты можешь! Вы можете проверить это с помощью Truffle:

  1. Инициируйте проект через truffle initи добавьте свой контракт и файл развертывания
  2. truffle develop
  3. compile
  4. migrate
  5. Govtcontract.deployed().then(instance => govt = instance.contract)
  6. govt.settx(1000, 1000, "test", 1000, "test", { gas: 500000 })

Я произвольно установил 500 000, потому что хранение такого количества переменных в одном пакете недешево с точки зрения затрат на газ.

При желании вы можете попробовать Remix или EthFiddle для составления контракта.