Первый вопрос на платформе. Надеюсь, что кто-то может помочь, меня ударили на это в течение нескольких дней
Я получил частную сеть блокчейнов с docker контейнерами. В настоящее время пытаюсь внедрить умные контракты и вызвать методы с помощью golang клиента.
У меня есть небольшой контракт на солидность
pragma solidity >=0.4.0 <0.7.0;
contract Requirements {
mapping (string => string) map;
function add(uint a, uint b) public pure returns (uint) {
return a+b;
}
function save(string memory key, string memory val) public {
map[key] = val;
}
}
И это мой код Golang, который я использую для вызова метода add в контракте.
package main
import (
"fmt"
"log"
"io/ioutil"
"math/big"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/ethclient"
requirements "../contracts"
)
func main() {
client, err := ethclient.Dial("http://localhost:8081")
if err != nil {
log.Fatal(err)
}
fmt.Println("we have a connection")
data, err := ioutil.ReadFile("contractAddr.data")
if err != nil {
fmt.Println(err)
}
fmt.Println("The Addr is " + string(data))
address := common.HexToAddress(string(data))
instance, err := requirements.NewRequirements(address, client)
if err != nil{
log.Fatal(err)
}
fmt.Printf("DEPLOYMENT ERROR 101: %v\n", err)
res, err := instance.Add(nil, big.NewInt(1),big.NewInt(3))
if err != nil {
fmt.Println("Debug103 " )
log.Fatal(err)
}
fmt.Println("Result is" + res.String())
}
Кажется, мои параметры верны, но я получаю сообщение об ошибке от abi. Любое объяснение, что означает сообщение об ошибке и что я должен делать? Любые советы будут полезны. Спасибо!