github.com/ChainSafe/chainbridge-core@v1.4.2/chains/evm/cli/local/local.go (about)

     1  package local
     2  
     3  import (
     4  	"fmt"
     5  	"math/big"
     6  
     7  	"github.com/ChainSafe/chainbridge-core/chains/evm/calls/evmclient"
     8  	"github.com/ChainSafe/chainbridge-core/chains/evm/calls/evmtransaction"
     9  
    10  	"github.com/spf13/cobra"
    11  )
    12  
    13  var LocalSetupCmd = &cobra.Command{
    14  	Use:   "local-setup",
    15  	Short: "Deploy and prefund a local bridge for testing",
    16  	Long:  "The local-setup command deploys a bridge, ERC20, ERC721 and generic handler contracts with preconfigured accounts and appropriate handlers",
    17  	RunE:  localSetup,
    18  }
    19  
    20  // configuration
    21  var (
    22  	ethEndpoint1 = "http://localhost:8545"
    23  	ethEndpoint2 = "http://localhost:8547"
    24  	fabric1      = evmtransaction.NewTransaction
    25  	fabric2      = evmtransaction.NewTransaction
    26  )
    27  
    28  func BindLocalSetupFlags(cmd *cobra.Command) {
    29  	cmd.Flags().StringVar(&ethEndpoint1, "endpoint1", "", "RPC endpoint of the first network")
    30  	cmd.Flags().StringVar(&ethEndpoint2, "endpoint2", "", "RPC endpoint of the second network")
    31  }
    32  
    33  func init() {
    34  	BindLocalSetupFlags(LocalSetupCmd)
    35  }
    36  
    37  func localSetup(cmd *cobra.Command, args []string) error {
    38  	// init client1
    39  	ethClient, err := evmclient.NewEVMClient(ethEndpoint1, EveKp)
    40  	if err != nil {
    41  		return err
    42  	}
    43  
    44  	// init client2
    45  	ethClient2, err := evmclient.NewEVMClient(ethEndpoint2, EveKp)
    46  	if err != nil {
    47  		return err
    48  	}
    49  
    50  	// chain 1
    51  	// domainsId: 0
    52  	config, err := SetupEVMBridge(ethClient, fabric1, 1, big.NewInt(1), EveKp.CommonAddress(), DefaultRelayerAddresses)
    53  	if err != nil {
    54  		return err
    55  	}
    56  
    57  	// chain 2
    58  	// domainId: 1
    59  	config2, err := SetupEVMBridge(ethClient2, fabric2, 2, big.NewInt(1), EveKp.CommonAddress(), DefaultRelayerAddresses)
    60  	if err != nil {
    61  		return err
    62  	}
    63  
    64  	prettyPrint(config, config2)
    65  
    66  	return nil
    67  }
    68  
    69  func prettyPrint(config, config2 BridgeConfig) {
    70  	fmt.Printf(`
    71  ===============================================
    72  🎉🎉🎉 ChainBridge Successfully Deployed 🎉🎉🎉
    73  
    74  - Chain 1 -
    75  Bridge: %s
    76  ERC20: %s
    77  ERC20 Handler: %s
    78  ERC721: %s
    79  ERC721 Handler: %s
    80  Generic Handler: %s
    81  Asset Store: %s
    82  ERC20 resourceId: %s
    83  ERC721 resourceId %s
    84  Generic resourceId %s
    85  
    86  - Chain 2 -
    87  Bridge: %s
    88  ERC20: %s
    89  ERC20 Handler: %s
    90  ERC721: %s
    91  ERC721 Handler: %s
    92  Generic Handler: %s
    93  Asset Store: %s
    94  ERC20 resourceId: %s
    95  ERC721 resourceId %s
    96  Generic resourceId %s
    97  
    98  ===============================================
    99  `,
   100  		// config
   101  		config.BridgeAddr,
   102  		config.Erc20Addr,
   103  		config.Erc20HandlerAddr,
   104  		config.Erc721Addr,
   105  		config.Erc721HandlerAddr,
   106  		config.GenericHandlerAddr,
   107  		config.AssetStoreAddr,
   108  		config.Erc20ResourceID,
   109  		config.Erc721ResourceID,
   110  		config.GenericResourceID,
   111  		// config2
   112  		config2.BridgeAddr,
   113  		config2.Erc20Addr,
   114  		config2.Erc20HandlerAddr,
   115  		config.Erc721Addr,
   116  		config.Erc721HandlerAddr,
   117  		config2.GenericHandlerAddr,
   118  		config2.AssetStoreAddr,
   119  		config2.Erc20ResourceID,
   120  		config2.Erc721ResourceID,
   121  		config2.GenericResourceID,
   122  	)
   123  }