func covertStringByte32(t string) [32]byte {
var b32 [32]byte
copy(b32[:], []byte(t))
return b32
}
func covertStringByte64(t string) [64]byte {
var b64 [64]byte
copy(b64[:], []byte(t))
return b64
}
golang go-ethereum contract string to [32]byte
golang test e2e
httpexpect star 1159
https://github.com/gavv/httpexpect
https://github.com/gavv/httpexpect/blob/master/_examples/echo_test.go
goconvey
https://segmentfault.com/a/1190000014924022
https://github.com/smartystreets/goconvey/
baloo star 652
https://github.com/h2non/baloo
frisby star 249
https://github.com/verdverm/frisby
apitest star 121
https://github.com/steinfletcher/apitest
https://github.com/gavv/httpexpect
https://github.com/gavv/httpexpect/blob/master/_examples/echo_test.go
goconvey
https://segmentfault.com/a/1190000014924022
https://github.com/smartystreets/goconvey/
baloo star 652
https://github.com/h2non/baloo
frisby star 249
https://github.com/verdverm/frisby
apitest star 121
https://github.com/steinfletcher/apitest
go mod custome model
https://stackoverflow.com/questions/52079662/go-get-cannot-find-local-packages-when-using-multiple-modules-in-a-repo
api/contracts/contract.go
package contracts
import (
"math/big"
"strings"
)....
func DeployContract(...)
api/contract.go
package main
import (
"api/contracts"
...)
func deployContract(c echo.Context) error {
address, tx, token, err := contracts.DeployContract(auth, client)
...
}
! Best Import is api/go.mod
module api
require (
api/contracts v0.0.0
...)
replace (
api/contracts v0.0.0 => ./contracts
...)
And api/contracts/go.mod
module api/contracts
require (
...)
solc abigen docker
sol file put in ~/contracts/sol
File list
~/contracts/sol/Contracts.solRUN
docker run -v ~/contracts:/sources ethereum/solc:0.4.23 -o /sources --abi --bin /sources/sol/Contract.sol
File list
~/contracts/sol/Contracts.sol~/contracts/Contracts.abi
~/contracts/Contracts.bin
1. 0.4.23 check your contract version. This example is pragma solidity ^0.4.23;
2. sol name need be changeed. This example is Contract.sol
3. Permission denied just use root
RUN
docker run -v ~/contracts:/sources ethereum/client-go:alltools-v1.9.2 abigen --abi /sources/Contract.abi --pkg contracts --type Contract --out /sources/Contract.go --bin /sources/Contract.bin
File list
~/contracts/sol/Contracts.sol~/contracts/Contracts.abi
~/contracts/Contracts.bin
~/contracts/Contracts.go
1. Contract.abi Contract.go must change by solc output
2. pkg is go source code:package contracts
3. type is go source code:type Cert struct { }
4. bin is go source code:be add "var ContractBin = ..." and "func DeployContract(..."
Error:
docker run -v ~/contracts/sol:/sources ethereum/client-go:alltools-v1.9.2 abigen --sol /sources/Cert.sol --pkg contracts --out /sources/Cert.go
Fatal: Failed to build Solidity contract: exec: "solc": executable file not found in $PATH
Source:
https://solidity.readthedocs.io/en/develop/installing-solidity.html#docker
https://github.com/ethereum/go-ethereum/wiki/Native-DApps:-Go-bindings-to-Ethereum-contracts#generating-the-bindings
https://hub.docker.com/r/ethereum/client-go
https://github.com/ethereum/go-ethereum/blob/master/cmd/abigen/main.go
go-eth
https://medium.com/taipei-ethereum-meetup/%E4%BD%BF%E7%94%A8-go-%E8%88%87%E4%BB%A5%E5%A4%AA%E5%9D%8A%E5%8D%80%E5%A1%8A%E9%8F%88%E4%BA%92%E5%8B%95-%E4%B8%89-7b7b1f40c06a
https://github.com/sc0Vu/go-eth
https://github.com/sc0Vu/go-eth
訂閱:
文章 (Atom)