web3p/web3.php

Uncaught InvalidArgumentException: Please make sure you have put all function params and callback.

ttmartinks opened this issue · 1 comments

Hello everyone.
I have a problem that i dont solving. I can't call addBlock function by passing a parameter.
Error: Uncaught InvalidArgumentException: Please make sure you have put all function params and callback.

// Appeler la fonction addBlock du contrat pour ajouter le nouveau checksum
$contract->send('addBlock', [$new_checksum], [
'from' => '0x2d1CC832643188351fC408552D089FE692aFd14a', //accountadress
'gas' => '3000000', // Limite de gaz
'gasPrice' => '20000000000', // Prix du gaz
'value' => '0', // Montant à envoyer
'nonce' => '1', // Nombre d'utilisation de la clé privée
], function($err, $transactionHash) {
if ($err !== null) {
echo 'Erreur : ' . $err->getMessage();
} else {
echo 'Transaction envoyée avec succès, hash : ' . $transactionHash;
}
});
My solidity contract: // SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

contract Sasoma {
struct Block {
bytes32 previousHash;
string checksum; // Changement du type de checksum de int à string
bytes32 hash;
}

Block[] public blocks;

function calculateHash(bytes memory _data) internal pure returns (bytes32) {
    return sha256(_data);
}

constructor(string memory _firstChecksum) {
    bytes32 firstPreviousHash = bytes32(0);
    bytes32 firstHash = calculateHash(abi.encodePacked(firstPreviousHash, _firstChecksum));
    blocks.push(Block(firstPreviousHash, _firstChecksum, firstHash));
}

function addBlock(string memory _checksum) public {
    bytes32 previousHash = blocks[blocks.length - 1].hash;
    bytes32 newHash = calculateHash(abi.encodePacked(previousHash, _checksum));
    blocks.push(Block(previousHash, _checksum, newHash));
}

function getBlock(uint index) external view returns (bytes32, string memory, bytes32) {
    require(index < blocks.length, "Index out of range");
    Block memory blockData = blocks[index];
    return (blockData.previousHash, blockData.checksum, blockData.hash);
}

function getLastBlock() external view returns (bytes32, string memory, bytes32) {
    require(blocks.length > 0, "No blocks available");
    Block memory lastBlock = blocks[blocks.length - 1];
    return (lastBlock.previousHash, lastBlock.checksum, lastBlock.hash);
}

}

php: // Appeler la fonction addBlock du contrat pour ajouter le nouveau checksum
$contract->send('addBlock', [$new_checksum], [
'from' => '0x2d1CC832643188351fC408552D089FE692aFd14a', //accountadress
'gas' => '3000000', // Limite de gaz
'gasPrice' => '20000000000', // Prix du gaz
'value' => '0', // Montant à envoyer
'nonce' => '1', // Nombre d'utilisation de la clé privée
], function($err, $transactionHash) {
if ($err !== null) {
echo 'Erreur : ' . $err->getMessage();
} else {
echo 'Transaction envoyée avec succès, hash : ' . $transactionHash;
}
});

Thanks you for helping me !

Hi brother, have you solved the issue above?