Ich habe ein HTML-Frontend, das eine Funktion in einem Vertrag aufruft, um einen anderen Vertrag zu erstellen/bereitzustellen. Die Funktion arbeitet eigenständig in Remix. Ich erhalte die Fehlermeldung „Uncaught Error: Invalid number of arguments to Solidity function“, aber ich sende die richtige Anzahl von Elementen. Der Javascript-Code lautet:
var borrowerAddress = '0x...';
$("#makeLoanButton").click(function() {
$("#loader").show();
myOriginator.makeLoan($("#loanID").val(), borrowerAddress, $("#loanAmount").val(), (err, res) => {
if (!err) {
$("#loader").hide();
}
});
});
Der Soliditätscode lautet:
function addLoan(address _newLoan) public {
// Add loan to originator
Loan myLoan = Loan(_newLoan);
loans.push(myLoan) -1;
originatorLoanBalance += myLoan.getBalance();
} // function addLoan(address _newLoan) public {
function makeLoan(bytes16 _loanID, address _borrower, uint _loanBalance) payable public {
// Create new loan
Loan myLoan = new Loan(_loanID, _borrower, address(this), _loanBalance);
// Add loan to loans
loans.push(myLoan) -1;
// Now add new loan to array
addLoan(address(myLoan));
// Send loan balance to borrower
if (!_borrower.send(_loanBalance)) {
revert();
}
} // function makeLoan(bytes16 _loanID, address _borrower, uint _loanBalance)
Irgendwelche Vorschläge?
Danke!
versuchen Sie, das Transaktionsobjekt zu setzen, da Ihre Funktion istpayable
myOriginator.makeLoan($("#loanID").val(), crediterAddress, $("#loanAmount").val(), {value: 1, gas: 2000}, (err, res) => { wenn (!err) { $("#Loader").hide(); } });
Hinweis : Sie können tatsächlich entfernen _loanBalance
und verwenden, msg.value
da Ihre Funktion kostenpflichtig ist
Philipp Rutowitz