Closed felix-shin-wt closed 4 months ago
ABIs in wemix/governance_abi.go is generated based on wemix/contracts/WemixGovernance.js. (The abi definitions are used in wemix/admin.go)
wemix/governance_abi.go: wemix/contracts/WemixGovernance.js
@cat $< | awk $(AWK_CODE_2) > $@
Currently, the js file must be updated manually whenever governance contracts are changed. ~For smoother integration, I suggest change Makefile updating the js file or generating abi.go directly by compiling governance contracts.~
This PR makes wemix/admin.go no longer use wemix/governance_abi.go. So generating abi.go is not needed anymore.
To ensure compile-time checking for commonly used contract names, it would be beneficial to declare them as constants. ("Registry" "Gov", "GovImp", "NCPExit", "NCPExitImp" "Staking", "StakingImp", "BallotStorage", "BallotStorageImp", "EnvStorage", "EnvStorageImp")
const (
Registry = "Registry"
Gov = "Gov"
GovImp = "GovImp"
NCPExit = "NCPExit"
NCPExitImp = "NCPExitImp"
Staking = "Staking"
StakingImp = "StakingImp"
BallotStorage = "BallotStorage"
BallotStorageImp = "BallotStorageImp"
EnvStorage = "EnvStorage"
EnvStorageImp = "EnvStorageImp"
)
In Ethereum, error is created by errors.New()
for simple messages and fmt.Errorf()
for formatted messages.
Also "pkg/errors" package is no longer maintained (https://github.com/pkg/errors/issues/245) so I recommend to replace the package with "errors" standard library.
Currently, the below codes use "github.com/pkg/errors".
The version control for the governance-contract is managed in go-wemix. (commit: e04c2b07fd0d773cc3e07cacddadd182074a1863)
go-wemix/wemix/governance-contract
1-1. The contract code, excluding the hardhat part, was copied togo-wemix/wemix/governance-contract/contracts
. 1-2. Test code to verify the operation was written in Golang and can be found atgo-wemix/wemix/governance-contracts/test
.The contract bound in the wemix package is used.
go-wemix/wemix/bind
2-1. The code for binding the contract was done in go-wemix/wemix/governance-contract/contracts/abigen.go. 2-2. All instances of using 'metclient.RemoteContract' were removed and replaced with the bound contract.A 'SimulatedBackend' including the governance-contract was created. 'go-wemix/wemix/bind/backends' 3-1. Functions were added and some were modified in 'go-wemix/accounts/abi/bind/backends'. 3-2. Modifications were made to prevent errors from occurring when adding a future block in simulation mode (ModeFake of ethash).