У меня 2 контракта, один на регистрацию, а другой контракт на функции о займах.Когда я запускаю контракт на ремикс, он работает нормально, и функция контракта Loan также выполняется, но когда я запускаю тот же код на локальном компьютере, используя Truffle, AngularJs и testrpc, он берет цену на газ для обеих функций, но хранит только данные пользователя и не хранит данныедля кредита
Договор о регистрации пользователя
pragma solidity ^0.4.23;
import "./ConvertLib.sol";
import "./Loans.sol";
contract Users is Loans{
address public owner;
enum status {enable,disable}
struct User {
string fname;
string lname;
string email;
uint phone;
string fileHash;
status ustatus;
bool check;
address add;
}
mapping (address => User) users;
address[] public allUsers;
function setUser(string _fname,string _lname,string _email,uint _phone,string _fileHash) public payable returns(bool) {
User storage newUser = users[msg.sender];
newUser.fname = _fname;
newUser.lname = _lname;
newUser.email = _email;
newUser.phone = _phone;
newUser.check = true;
newUser.fileHash = _fileHash;
newUser.add = msg.sender;
allUsers.push(msg.sender) -1;
// Both ways it is nor working
// Loans.requestLoan(250,"EUR","ASD",123,"asd");
Loans.Loan storage newLoan = loans[msg.sender];
newLoan.amount = 250;
newLoan.currency = "Euro";
newLoan.loanDescription = "Description";
newLoan.endDate = 23;
newLoan.returnPolicy = "ad";
allLoans.push(msg.sender) -1;
return true;
}
}
Договор займа
pragma solidity ^0.4.18;
contract Loans{
struct Loan {
uint amount;
string currency;
string loanDescription;
uint endDate;
string returnPolicy;
}
mapping (address => Loan) loans;
address[] public allLoans;
function requestLoan(uint _amount,string _currency,string _description,uint _endDate,string _returnPolicy) public payable{
Loan storage newLoan = loans[msg.sender];
newLoan.amount = _amount;
newLoan.currency = _currency;
newLoan.loanDescription = _description;
newLoan.endDate = _endDate;
newLoan.returnPolicy = _returnPolicy;
allLoans.push(msg.sender) -1;
}
}
В AngularJs я использую этот способ для вызова функции
async registerUser(){
const deployedUser = await this.User.deployed();
try{
const result = await deployedUser.setUser.sendTransaction(this.model.fname,this.model.lname,this.model.email,this.model.phone,"asd", {from: this.model.account});
console.log(result);
}
catch(e)
{
console.log(e);
}
}