Skip to content

Commit

Permalink
contracts: Generate under the new directory structure
Browse files Browse the repository at this point in the history
  • Loading branch information
blukat29 committed Apr 5, 2024
1 parent 0b48e3d commit ed74650
Show file tree
Hide file tree
Showing 46 changed files with 40,395 additions and 466 deletions.
20 changes: 12 additions & 8 deletions blockchain/system/constant.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,10 @@ import (

"github.com/klaytn/klaytn/common"
"github.com/klaytn/klaytn/common/hexutil"
contracts "github.com/klaytn/klaytn/contracts/system_contracts"
kip113contract "github.com/klaytn/klaytn/contracts/contracts/system_contracts/kip113"
kip149contract "github.com/klaytn/klaytn/contracts/contracts/system_contracts/kip149"
proxycontract "github.com/klaytn/klaytn/contracts/contracts/system_contracts/proxy"
testcontract "github.com/klaytn/klaytn/contracts/contracts/testing/system_contracts"
"github.com/klaytn/klaytn/log"
)

Expand All @@ -46,19 +49,20 @@ var (
ImplementationSlot = common.Hex2Bytes("360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc")

// Some system contracts are allocated at special addresses.
AddressBookAddr = common.HexToAddress("0x0000000000000000000000000000000000000400") // TODO: replace contracts/reward/contract/utils.go
RegistryAddr = common.HexToAddress("0x0000000000000000000000000000000000000401")
CypressCreditAddr = common.HexToAddress("0x0000000000000000000000000000000000000000")
AddressBookAddr = common.HexToAddress("0x0000000000000000000000000000000000000400") // TODO: replace contracts/reward/contract/utils.go
RegistryAddr = common.HexToAddress("0x0000000000000000000000000000000000000401")
// The following addresses are only used for testing.
Kip113ProxyAddrMock = common.HexToAddress("0x0000000000000000000000000000000000000402")
Kip113LogicAddrMock = common.HexToAddress("0x0000000000000000000000000000000000000403")

// System contract binaries to be injected at hardfork or used in testing.
RegistryCode = hexutil.MustDecode("0x" + contracts.RegistryBinRuntime)
RegistryMockCode = hexutil.MustDecode("0x" + contracts.RegistryMockBinRuntime)
Kip113Code = hexutil.MustDecode("0x" + contracts.KIP113BinRuntime)
Kip113MockCode = hexutil.MustDecode("0x" + contracts.KIP113MockBinRuntime)
RegistryCode = hexutil.MustDecode("0x" + kip149contract.RegistryBinRuntime)
RegistryMockCode = hexutil.MustDecode("0x" + testcontract.RegistryMockBinRuntime)
Kip113Code = hexutil.MustDecode("0x" + kip113contract.SimpleBlsRegistryBinRuntime)
Kip113MockCode = hexutil.MustDecode("0x" + testcontract.KIP113MockBinRuntime)

ERC1967ProxyCode = hexutil.MustDecode("0x" + contracts.ERC1967ProxyBinRuntime)
ERC1967ProxyCode = hexutil.MustDecode("0x" + proxycontract.ERC1967ProxyBinRuntime)

// Errors
ErrRegistryNotInstalled = errors.New("Registry contract not installed")
Expand Down
2 changes: 1 addition & 1 deletion blockchain/system/kip113.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import (

"github.com/klaytn/klaytn/accounts/abi/bind"
"github.com/klaytn/klaytn/common"
contracts "github.com/klaytn/klaytn/contracts/system_contracts"
contracts "github.com/klaytn/klaytn/contracts/contracts/system_contracts/kip113"
"github.com/klaytn/klaytn/crypto/bls"
)

Expand Down
24 changes: 13 additions & 11 deletions blockchain/system/kip113_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ import (
"github.com/klaytn/klaytn/accounts/abi/bind/backends"
"github.com/klaytn/klaytn/blockchain"
"github.com/klaytn/klaytn/common"
contracts "github.com/klaytn/klaytn/contracts/system_contracts"
contracts "github.com/klaytn/klaytn/contracts/contracts/system_contracts/kip113"
proxycontracts "github.com/klaytn/klaytn/contracts/contracts/system_contracts/proxy"
testcontracts "github.com/klaytn/klaytn/contracts/contracts/testing/system_contracts"
"github.com/klaytn/klaytn/crypto"
"github.com/klaytn/klaytn/crypto/bls"
"github.com/klaytn/klaytn/log"
Expand Down Expand Up @@ -42,7 +44,7 @@ func TestReadKip113(t *testing.T) {
transactor.Register(sender, nodeId, pub1, pop1)
backend.Commit()

caller, _ := contracts.NewKIP113Caller(contractAddr, backend)
caller, _ := contracts.NewSimpleBlsRegistryCaller(contractAddr, backend)

opts := &bind.CallOpts{BlockNumber: nil}
owner, _ := caller.Owner(opts)
Expand Down Expand Up @@ -80,7 +82,7 @@ func TestAllocKip113(t *testing.T) {
_, pub1, pop1 = makeBlsKey()
_, pub2, pop2 = makeBlsKey()

abi, _ = contracts.KIP113MockMetaData.GetAbi()
abi, _ = testcontracts.KIP113MockMetaData.GetAbi()
input, _ = abi.Pack("initialize")

alloc = blockchain.GenesisAlloc{
Expand All @@ -90,9 +92,9 @@ func TestAllocKip113(t *testing.T) {
}
backend = backends.NewSimulatedBackend(alloc)
)
kip113Addr, _, _, _ := contracts.DeployKIP113Mock(sender, backend)
kip113Addr, _, _, _ := testcontracts.DeployKIP113Mock(sender, backend)
backend.Commit()
contractAddr, _, _, _ := contracts.DeployERC1967Proxy(sender, backend, kip113Addr, input)
contractAddr, _, _, _ := proxycontracts.DeployERC1967Proxy(sender, backend, kip113Addr, input)
backend.Commit()
var (
allocProxyStorage = AllocProxy(kip113Addr)
Expand All @@ -110,7 +112,7 @@ func TestAllocKip113(t *testing.T) {
allocStorage := MergeStorage(allocProxyStorage, allocKip113Storage)

// 2. Create storage by calling register()
contract, _ := contracts.NewKIP113MockTransactor(contractAddr, backend)
contract, _ := testcontracts.NewKIP113MockTransactor(contractAddr, backend)

contract.Register(sender, nodeId1, pub1, pop1)
contract.Register(sender, nodeId2, pub2, pop2)
Expand All @@ -121,28 +123,28 @@ func TestAllocKip113(t *testing.T) {
compareStorage(t, backend, kip113Addr, allocLogicStorage)
}

func deployKip113Mock(t *testing.T, sender *bind.TransactOpts, backend *backends.SimulatedBackend, params ...interface{}) (*contracts.KIP113MockTransactor, common.Address) {
func deployKip113Mock(t *testing.T, sender *bind.TransactOpts, backend *backends.SimulatedBackend, params ...interface{}) (*testcontracts.KIP113MockTransactor, common.Address) {
// Prepare input data for ERC1967Proxy constructor
abi, err := contracts.KIP113MockMetaData.GetAbi()
abi, err := testcontracts.KIP113MockMetaData.GetAbi()
assert.Nil(t, err)
data, err := abi.Pack("initialize")
assert.Nil(t, err)

// Deploy Proxy contract
// 1. Deploy KIP113Mock implementation contract
implAddr, _, _, err := contracts.DeployKIP113Mock(sender, backend)
implAddr, _, _, err := testcontracts.DeployKIP113Mock(sender, backend)
backend.Commit()
assert.Nil(t, err)
t.Logf("KIP113Mock impl at %x", implAddr)

// 2. Deploy ERC1967Proxy(KIP113Mock.address, _data)
contractAddr, _, _, err := contracts.DeployERC1967Proxy(sender, backend, implAddr, data)
contractAddr, _, _, err := proxycontracts.DeployERC1967Proxy(sender, backend, implAddr, data)
backend.Commit()
assert.Nil(t, err)
t.Logf("ERC1967Proxy at %x", contractAddr)

// 3. Attach KIP113Mock contract to the proxy
transactor, _ := contracts.NewKIP113MockTransactor(contractAddr, backend)
transactor, _ := testcontracts.NewKIP113MockTransactor(contractAddr, backend)

return transactor, contractAddr
}
Expand Down
2 changes: 1 addition & 1 deletion blockchain/system/registry.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import (
"github.com/klaytn/klaytn/accounts/abi/bind"
"github.com/klaytn/klaytn/blockchain/state"
"github.com/klaytn/klaytn/common"
contracts "github.com/klaytn/klaytn/contracts/system_contracts"
contracts "github.com/klaytn/klaytn/contracts/contracts/system_contracts/kip149"
"github.com/klaytn/klaytn/params"
)

Expand Down
2 changes: 1 addition & 1 deletion blockchain/system/registry_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
"github.com/klaytn/klaytn/accounts/abi/bind/backends"
"github.com/klaytn/klaytn/blockchain"
"github.com/klaytn/klaytn/common"
contracts "github.com/klaytn/klaytn/contracts/system_contracts"
contracts "github.com/klaytn/klaytn/contracts/contracts/testing/system_contracts"
"github.com/klaytn/klaytn/crypto"
"github.com/klaytn/klaytn/log"
"github.com/klaytn/klaytn/params"
Expand Down
20 changes: 10 additions & 10 deletions cmd/homi/genesis/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import (
"github.com/klaytn/klaytn/blockchain/system"
"github.com/klaytn/klaytn/cmd/homi/extra"
"github.com/klaytn/klaytn/consensus/clique"
"github.com/klaytn/klaytn/contracts/reward/contract"
testcontract "github.com/klaytn/klaytn/contracts/contracts/testing/reward"
"github.com/klaytn/klaytn/log"
"github.com/klaytn/klaytn/params"

Expand Down Expand Up @@ -75,11 +75,11 @@ func Alloc(addrs []common.Address, balance *big.Int) Option {
func AllocWithPrecypressContract(addrs []common.Address, balance *big.Int) Option {
return func(genesis *blockchain.Genesis) {
alloc := makeGenesisAccount(addrs, balance)
alloc[common.HexToAddress(contract.CypressCreditContractAddress)] = blockchain.GenesisAccount{
alloc[system.CypressCreditAddr] = blockchain.GenesisAccount{
Code: common.FromHex(CypressCreditBin),
Balance: big.NewInt(0),
}
alloc[common.HexToAddress(contract.AddressBookContractAddress)] = blockchain.GenesisAccount{
alloc[system.AddressBookAddr] = blockchain.GenesisAccount{
Code: common.FromHex(PreCypressAddressBookBin),
Balance: big.NewInt(0),
}
Expand All @@ -90,11 +90,11 @@ func AllocWithPrecypressContract(addrs []common.Address, balance *big.Int) Optio
func AllocWithCypressContract(addrs []common.Address, balance *big.Int) Option {
return func(genesis *blockchain.Genesis) {
alloc := makeGenesisAccount(addrs, balance)
alloc[common.HexToAddress(contract.CypressCreditContractAddress)] = blockchain.GenesisAccount{
alloc[system.CypressCreditAddr] = blockchain.GenesisAccount{
Code: common.FromHex(CypressCreditBin),
Balance: big.NewInt(0),
}
alloc[common.HexToAddress(contract.AddressBookContractAddress)] = blockchain.GenesisAccount{
alloc[system.AddressBookAddr] = blockchain.GenesisAccount{
Code: common.FromHex(CypressAddressBookBin),
Balance: big.NewInt(0),
}
Expand All @@ -105,7 +105,7 @@ func AllocWithCypressContract(addrs []common.Address, balance *big.Int) Option {
func AllocWithPrebaobabContract(addrs []common.Address, balance *big.Int) Option {
return func(genesis *blockchain.Genesis) {
alloc := makeGenesisAccount(addrs, balance)
alloc[common.HexToAddress(contract.AddressBookContractAddress)] = blockchain.GenesisAccount{
alloc[system.AddressBookAddr] = blockchain.GenesisAccount{
Code: common.FromHex(PrebaobabAddressBookBin),
Balance: big.NewInt(0),
}
Expand All @@ -116,7 +116,7 @@ func AllocWithPrebaobabContract(addrs []common.Address, balance *big.Int) Option
func AllocWithBaobabContract(addrs []common.Address, balance *big.Int) Option {
return func(genesis *blockchain.Genesis) {
alloc := makeGenesisAccount(addrs, balance)
alloc[common.HexToAddress(contract.AddressBookContractAddress)] = blockchain.GenesisAccount{
alloc[system.AddressBookAddr] = blockchain.GenesisAccount{
Code: common.FromHex(BaobabAddressBookBin),
Balance: big.NewInt(0),
}
Expand All @@ -127,7 +127,7 @@ func AllocWithBaobabContract(addrs []common.Address, balance *big.Int) Option {
// Patch the hardcoded line in AddressBook.sol:constructContract().
func PatchAddressBook(addr common.Address) Option {
return func(genesis *blockchain.Genesis) {
contractAddr := common.HexToAddress(contract.AddressBookContractAddress)
contractAddr := system.AddressBookAddr
contractAccount, ok := genesis.Alloc[contractAddr]
if !ok {
log.Fatalf("No AddressBook to patch")
Expand Down Expand Up @@ -157,13 +157,13 @@ func PatchAddressBook(addr common.Address) Option {

func AddressBookMock() Option {
return func(genesis *blockchain.Genesis) {
contractAddr := common.HexToAddress(contract.AddressBookContractAddress)
contractAddr := system.AddressBookAddr
contractAccount, ok := genesis.Alloc[contractAddr]
if !ok {
log.Fatalf("No AddressBook to patch")
}

code := contract.AddressBookMockBinRuntime
code := testcontract.AddressBookMockBinRuntime
genesis.Alloc[contractAddr] = blockchain.GenesisAccount{
Code: common.FromHex(code),
Balance: contractAccount.Balance,
Expand Down
2 changes: 1 addition & 1 deletion consensus/istanbul/backend/kip103.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
"github.com/klaytn/klaytn/blockchain/vm"
"github.com/klaytn/klaytn/common"
"github.com/klaytn/klaytn/consensus"
"github.com/klaytn/klaytn/contracts/kip103"
"github.com/klaytn/klaytn/contracts/contracts/system_contracts/kip103"
)

var (
Expand Down
2 changes: 1 addition & 1 deletion consensus/istanbul/backend/kip103_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
"github.com/klaytn/klaytn/accounts/abi"
"github.com/klaytn/klaytn/common"
"github.com/klaytn/klaytn/common/hexutil"
"github.com/klaytn/klaytn/contracts/kip103"
"github.com/klaytn/klaytn/contracts/contracts/system_contracts/kip103"
"github.com/klaytn/klaytn/params"
"github.com/stretchr/testify/assert"
)
Expand Down
1 change: 1 addition & 0 deletions contracts/@openzeppelin
56 changes: 28 additions & 28 deletions contracts/contracts/service_chain/bridge/Bridge.go

Large diffs are not rendered by default.

9,542 changes: 9,542 additions & 0 deletions contracts/contracts/system_contracts/consensus/consensus.go

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions contracts/contracts/system_contracts/consensus/consensus.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.4.24;

// This file is an unified `abigen` target file.
// If each file is abigen separately, the resulting Go files may have duplicate symbols.
import "./AddressBook.sol";
import "./CnStakingContract.sol";
Loading

0 comments on commit ed74650

Please sign in to comment.