Fehler beim Übergeben von Werten von web3 an solidity

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!

Antworten (1)

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 _loanBalanceund verwenden, msg.valueda Ihre Funktion kostenpflichtig ist

Danke für die Antwort. Ich habe das Problem herausgefunden. Es lag nicht an meiner Syntax, sondern daran, dass ich mich auf die falsche HTML-ID bezog! Es hätte $(#loanBalance") anstelle von $(#loanAmount") sein sollen!