Commit 343a51e3 authored by QM's avatar QM Committed by vipwzw

add boss4x offline create_file

parent bc3473ec
......@@ -34,6 +34,8 @@ cp ./build/* "${OUT_DIR}"
cp ./build/abi/* "${OUT_DIR}"
cp ../../cross2eth/cmd/build/public/* "${OUT_DIR}"
cp ../../cross2eth/cmd/build/abi/* "${OUT_DIR}"
cp ../../cross2eth/boss4x/chain33/deploy_chain33.toml "${OUT_DIR}"
cp ../../cross2eth/boss4x/ethereum/deploy_ethereum.toml "${OUT_DIR}"
OUT_TESTDIR="${1}/dapptest/$strapp"
mkdir -p "${OUT_TESTDIR}"
......
......@@ -230,7 +230,7 @@ function get_evm_cli() {
CLID="docker exec ${dockerNamePrefix}_ebrelayerd_1 /root/ebcli_A"
docker_ganachetest_ip=$(get_docker_addr "${dockerNamePrefix}_ganachetest_1")
Boss4xCLI="docker exec ${dockerNamePrefix}_ebrelayera_1 /root/boss4x --rpc_laddr http://${docker_chain33_ip}:8901 --rpc_laddr_ethereum http://${docker_ganachetest_ip}:8545 --paraName user.p.para. --chainID ${chain33ID} --chainEthId 0"
Boss4xCLI="docker exec ${dockerNamePrefix}_ebrelayera_1 /root/boss4x --rpc_laddr http://${docker_chain33_ip}:8901 --rpc_laddr_ethereum http://${docker_ganachetest_ip}:8545 --paraName user.p.para. --chainID ${chain33ID} --chainEthId 1337"
EvmxgoBoss4xCLI="./evmxgoboss4x --rpc_laddr http://${docker_chain33_ip}:8901 --paraName user.p.para. --chainID ${chain33ID}"
}
}
......
# 验证人地址,至少配置3个以上,即大于等于3个
validatorsAddr=["1N6HstkyLFS8QCeVfdvYxx1xoryXoJtvvZ", "155ooMPBTF8QQsGAknkK7ei5D78rwDEFe6", "13zBdQwuyDh7cKN79oT2odkxYuDbgQiXFv", "113ZzVamKfAtGt9dq45fX1mNsEoDiN95HG"]
# 验证人权重
initPowers=[25, 25, 25, 25]
# 离线多签地址
multisignAddrs=["168Sn1DXnLrZHTcAM9stD6t2P49fNuJfJ9", "13KTf57aCkVVJYNJBXBBveiA5V811SrLcT", "1JQwQWsShTHC4zxHzbUfYQK4kRBriUQdEe", "1NHuKqoKe3hyv52PF8XBAyaTmJWAqA2Jbb"]
\ No newline at end of file
......@@ -2,14 +2,14 @@ package offline
import (
"fmt"
"strconv"
"strings"
"time"
ebTypes "github.com/33cn/plugin/plugin/dapp/cross2eth/ebrelayer/types"
"github.com/33cn/chain33/common/address"
"github.com/33cn/chain33/system/crypto/secp256k1"
"github.com/33cn/plugin/plugin/dapp/cross2eth/contracts/contracts4chain33/generated"
ebTypes "github.com/33cn/plugin/plugin/dapp/cross2eth/ebrelayer/types"
"github.com/33cn/plugin/plugin/dapp/dex/utils"
evmAbi "github.com/33cn/plugin/plugin/dapp/evm/executor/abi"
"github.com/33cn/plugin/plugin/dapp/evm/executor/vm/common"
......@@ -21,6 +21,71 @@ import (
./boss4x chain33 offline send -f deployCrossX2Chain33.txt
*/
type DeployChain33ConfigInfo struct {
ValidatorsAddr []string `toml:"validatorsAddr"`
InitPowers []int64 `toml:"initPowers"`
Symbol string `toml:"symbol"`
MultisignAddrs []string `toml:"multisignAddrs"`
}
func CreateContractsWithFileCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "create_file",
Short: "create and sign all the offline cross to ethereum contracts(inclue valset,ethereumBridge,bridgeBank,oracle,bridgeRegistry,mulSign)",
Run: createContractsWithFile,
}
addCreateContractsWithFileFlags(cmd)
return cmd
}
func addCreateContractsWithFileFlags(cmd *cobra.Command) {
cmd.Flags().StringP("key", "k", "", "the deployer private key")
_ = cmd.MarkFlagRequired("key")
cmd.Flags().StringP("note", "n", "", "transaction note info (optional)")
cmd.Flags().Float64P("fee", "f", 0, "contract gas fee (optional)")
cmd.Flags().StringP("conf", "f", "", "config file")
_ = cmd.MarkFlagRequired("conf")
}
func createContractsWithFile(cmd *cobra.Command, _ []string) {
cfgpath, _ := cmd.Flags().GetString("conf")
var deployCfg DeployChain33ConfigInfo
InitCfg(cfgpath, &deployCfg)
if len(deployCfg.InitPowers) != len(deployCfg.ValidatorsAddr) {
panic("not same number for validator address and power")
}
if len(deployCfg.ValidatorsAddr) < 3 {
panic("the number of validator must be not less than 3")
}
validators := strings.Join(deployCfg.ValidatorsAddr, ",")
var stringPowers []string
for _, v := range deployCfg.InitPowers {
stringPowers = append(stringPowers, strconv.FormatInt(v, 10))
}
initPowers := strings.Join(stringPowers, ",")
privateKeyStr, _ := cmd.Flags().GetString("key")
var driver secp256k1.Driver
privateKeySli := common.FromHex(privateKeyStr)
privateKey, err := driver.PrivKeyFromBytes(privateKeySli)
if nil != err {
fmt.Println("Failed to do PrivKeyFromBytes")
return
}
fromAddr := address.PubKeyToAddress(privateKey.PubKey().Bytes())
from := common.Address{
Addr: fromAddr,
}
valsetParameter := fromAddr.String() + ",[" + validators + "],[" + initPowers + "]"
multisignAddrs := strings.Join(deployCfg.MultisignAddrs, ",")
txCreateInfo := getTxInfo(cmd)
createChain33DeployTxs(txCreateInfo, valsetParameter, multisignAddrs, from)
}
func CreateCrossBridgeCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "create",
......@@ -44,8 +109,9 @@ func addCreateCrossBridgeFlags(cmd *cobra.Command) {
func createCrossBridge(cmd *cobra.Command, args []string) {
_ = args
var txs []*utils.Chain33OfflineTx
privateKeyStr, _ := cmd.Flags().GetString("key")
multisignAddrs, _ := cmd.Flags().GetString("multisignAddrs")
valsetParameter, _ := cmd.Flags().GetString("valset")
var driver secp256k1.Driver
privateKeySli := common.FromHex(privateKeyStr)
privateKey, err := driver.PrivKeyFromBytes(privateKeySli)
......@@ -58,11 +124,18 @@ func createCrossBridge(cmd *cobra.Command, args []string) {
Addr: fromAddr,
}
txCreateInfo := getTxInfo(cmd)
createChain33DeployTxs(txCreateInfo, valsetParameter, multisignAddrs, from)
}
func createChain33DeployTxs(txCreateInfo *utils.TxCreateInfo, valsetParameter, multisignAddrs string, from common.Address) {
var txs []*utils.Chain33OfflineTx
i := 1
fmt.Printf("%d: Going to create Valset\n", i)
i += 1
// 0
valsetTx, err := createValsetTxAndSign(cmd, from)
valsetTx, err := createValsetTxAndSign(txCreateInfo, valsetParameter, from)
if nil != err {
fmt.Println("Failed to createValsetTxAndSign due to cause:", err.Error())
return
......@@ -72,7 +145,7 @@ func createCrossBridge(cmd *cobra.Command, args []string) {
fmt.Printf("%d: Going to create EthereumBridge\n", i)
i += 1
// 1
ethereumBridgeTx, err := createEthereumBridgeAndSign(cmd, from, valsetTx.ContractAddr)
ethereumBridgeTx, err := createEthereumBridgeAndSign(txCreateInfo, from, valsetTx.ContractAddr)
if nil != err {
fmt.Println("Failed to createEthereumBridgeAndSign due to cause:", err.Error())
return
......@@ -82,7 +155,7 @@ func createCrossBridge(cmd *cobra.Command, args []string) {
fmt.Printf("%d: Going to create Oracle\n", i)
i += 1
// 2
oracleTx, err := createOracleTxAndSign(cmd, from, valsetTx.ContractAddr, ethereumBridgeTx.ContractAddr)
oracleTx, err := createOracleTxAndSign(txCreateInfo, from, valsetTx.ContractAddr, ethereumBridgeTx.ContractAddr)
if nil != err {
fmt.Println("Failed to createOracleTxAndSign due to cause:", err.Error())
return
......@@ -92,7 +165,7 @@ func createCrossBridge(cmd *cobra.Command, args []string) {
fmt.Printf("%d: Going to create BridgeBank\n", i)
i += 1
// 3
bridgeBankTx, err := createBridgeBankTxAndSign(cmd, from, valsetTx.ContractAddr, ethereumBridgeTx.ContractAddr)
bridgeBankTx, err := createBridgeBankTxAndSign(txCreateInfo, from, valsetTx.ContractAddr, ethereumBridgeTx.ContractAddr)
if nil != err {
fmt.Println("Failed to createBridgeBankTxAndSign due to cause:", err.Error())
return
......@@ -102,7 +175,7 @@ func createCrossBridge(cmd *cobra.Command, args []string) {
fmt.Printf("%d: Going to set BridgeBank to EthBridge \n", i)
i += 1
// 4
setBridgeBank2EthBridgeTx, err := setBridgeBank2EthBridgeTxAndSign(cmd, ethereumBridgeTx.ContractAddr, bridgeBankTx.ContractAddr)
setBridgeBank2EthBridgeTx, err := setBridgeBank2EthBridgeTxAndSign(txCreateInfo, ethereumBridgeTx.ContractAddr, bridgeBankTx.ContractAddr)
if nil != err {
fmt.Println("Failed to setBridgeBank2EthBridgeTxAndSign due to cause:", err.Error())
return
......@@ -112,7 +185,7 @@ func createCrossBridge(cmd *cobra.Command, args []string) {
fmt.Printf("%d: Going to set Oracle to EthBridge \n", i)
i += 1
// 5
setOracle2EthBridgeTx, err := setOracle2EthBridgeTxAndSign(cmd, ethereumBridgeTx.ContractAddr, oracleTx.ContractAddr)
setOracle2EthBridgeTx, err := setOracle2EthBridgeTxAndSign(txCreateInfo, ethereumBridgeTx.ContractAddr, oracleTx.ContractAddr)
if nil != err {
fmt.Println("Failed to setOracle2EthBridgeTxAndSign due to cause:", err.Error())
return
......@@ -122,7 +195,7 @@ func createCrossBridge(cmd *cobra.Command, args []string) {
fmt.Printf("%d: Going to create BridgeRegistry \n", i)
i += 1
// 6
createBridgeRegistryTx, err := createBridgeRegistryTxAndSign(cmd, from, ethereumBridgeTx.ContractAddr, valsetTx.ContractAddr, bridgeBankTx.ContractAddr, oracleTx.ContractAddr)
createBridgeRegistryTx, err := createBridgeRegistryTxAndSign(txCreateInfo, from, ethereumBridgeTx.ContractAddr, valsetTx.ContractAddr, bridgeBankTx.ContractAddr, oracleTx.ContractAddr)
if nil != err {
fmt.Println("Failed to createBridgeRegistryTxAndSign due to cause:", err.Error())
return
......@@ -132,7 +205,7 @@ func createCrossBridge(cmd *cobra.Command, args []string) {
fmt.Printf("%d: Going to create MulSign2chain33 \n", i)
i += 1
// 7
createMulSign2chain33Tx, err := createMulSignAndSign(cmd, from)
createMulSign2chain33Tx, err := createMulSignAndSign(txCreateInfo, from)
if nil != err {
fmt.Println("Failed to createMulSign2chain33Tx due to cause:", err.Error())
return
......@@ -142,7 +215,7 @@ func createCrossBridge(cmd *cobra.Command, args []string) {
fmt.Printf("%d: Going to save multisign contract config offline account \n", i)
i += 1
// 8
configMultisignOfflineSaveAccountTx, err := configMultisignOfflineSaveAccount(cmd, createMulSign2chain33Tx.ContractAddr, bridgeBankTx.ContractAddr)
configMultisignOfflineSaveAccountTx, err := configMultisignOfflineSaveAccount(txCreateInfo, createMulSign2chain33Tx.ContractAddr, bridgeBankTx.ContractAddr)
if nil != err {
fmt.Println("Failed to configMultisignOfflineSaveAccountTx due to cause:", err.Error())
return
......@@ -152,7 +225,7 @@ func createCrossBridge(cmd *cobra.Command, args []string) {
fmt.Printf("%d: Going to Setup multisignAddrs to contract \n", i)
i += 1
// 9
multisignSetupTx, err := multisignSetup(cmd, createMulSign2chain33Tx.ContractAddr)
multisignSetupTx, err := multisignSetup(txCreateInfo, multisignAddrs, createMulSign2chain33Tx.ContractAddr)
if nil != err {
fmt.Println("Failed to configMultisignOfflineSaveAccountTx due to cause:", err.Error())
return
......@@ -163,9 +236,9 @@ func createCrossBridge(cmd *cobra.Command, args []string) {
utils.WriteToFileInJson(crossXfileName, txs)
}
func createBridgeRegistryTxAndSign(cmd *cobra.Command, from common.Address, ethereumBridge, valset, bridgeBank, oracle string) (*utils.Chain33OfflineTx, error) {
func createBridgeRegistryTxAndSign(txCreateInfo *utils.TxCreateInfo, from common.Address, ethereumBridge, valset, bridgeBank, oracle string) (*utils.Chain33OfflineTx, error) {
createPara := fmt.Sprintf("%s,%s,%s,%s", ethereumBridge, bridgeBank, oracle, valset)
content, txHash, err := utils.CreateContractAndSign(getTxInfo(cmd), generated.BridgeRegistryBin, generated.BridgeRegistryABI, createPara, "BridgeRegistry")
content, txHash, err := utils.CreateContractAndSign(txCreateInfo, generated.BridgeRegistryBin, generated.BridgeRegistryABI, createPara, "BridgeRegistry")
if nil != err {
return nil, err
}
......@@ -181,7 +254,7 @@ func createBridgeRegistryTxAndSign(cmd *cobra.Command, from common.Address, ethe
return bridgeRegistryTx, nil
}
func setOracle2EthBridgeTxAndSign(cmd *cobra.Command, ethbridge, oracle string) (*utils.Chain33OfflineTx, error) {
func setOracle2EthBridgeTxAndSign(txCreateInfo *utils.TxCreateInfo, ethbridge, oracle string) (*utils.Chain33OfflineTx, error) {
parameter := fmt.Sprintf("setOracle(%s)", oracle)
_, packData, err := evmAbi.Pack(parameter, generated.EthereumBridgeABI, false)
if nil != err {
......@@ -189,23 +262,23 @@ func setOracle2EthBridgeTxAndSign(cmd *cobra.Command, ethbridge, oracle string)
return nil, err
}
return createOfflineTx(cmd, packData, ethbridge, "setOracle2EthBridge", time.Second*5)
return createOfflineTx(txCreateInfo, packData, ethbridge, "setOracle2EthBridge", time.Second*5)
}
func setBridgeBank2EthBridgeTxAndSign(cmd *cobra.Command, ethbridge, bridgebank string) (*utils.Chain33OfflineTx, error) {
func setBridgeBank2EthBridgeTxAndSign(txCreateInfo *utils.TxCreateInfo, ethbridge, bridgebank string) (*utils.Chain33OfflineTx, error) {
parameter := fmt.Sprintf("setBridgeBank(%s)", bridgebank)
_, packData, err := evmAbi.Pack(parameter, generated.EthereumBridgeABI, false)
if nil != err {
fmt.Println("setBridgeBank2EthBridge", "Failed to do abi.Pack due to:", err.Error())
return nil, err
}
return createOfflineTx(cmd, packData, ethbridge, "setBridgeBank2EthBridge", time.Second*5)
return createOfflineTx(txCreateInfo, packData, ethbridge, "setBridgeBank2EthBridge", time.Second*5)
}
func createBridgeBankTxAndSign(cmd *cobra.Command, from common.Address, oracle, ethereumBridge string) (*utils.Chain33OfflineTx, error) {
func createBridgeBankTxAndSign(txCreateInfo *utils.TxCreateInfo, from common.Address, oracle, ethereumBridge string) (*utils.Chain33OfflineTx, error) {
operator := from.String()
createPara := fmt.Sprintf("%s,%s,%s", operator, oracle, ethereumBridge)
content, txHash, err := utils.CreateContractAndSign(getTxInfo(cmd), generated.BridgeBankBin, generated.BridgeBankABI, createPara, "bridgeBank")
content, txHash, err := utils.CreateContractAndSign(txCreateInfo, generated.BridgeBankBin, generated.BridgeBankABI, createPara, "bridgeBank")
if nil != err {
return nil, err
}
......@@ -221,10 +294,10 @@ func createBridgeBankTxAndSign(cmd *cobra.Command, from common.Address, oracle,
return bridgeBankTx, nil
}
func createOracleTxAndSign(cmd *cobra.Command, from common.Address, valset, ethereumBridge string) (*utils.Chain33OfflineTx, error) {
func createOracleTxAndSign(txCreateInfo *utils.TxCreateInfo, from common.Address, valset, ethereumBridge string) (*utils.Chain33OfflineTx, error) {
operator := from.String()
createPara := fmt.Sprintf("%s,%s,%s", operator, valset, ethereumBridge)
content, txHash, err := utils.CreateContractAndSign(getTxInfo(cmd), generated.OracleBin, generated.OracleABI, createPara, "oralce")
content, txHash, err := utils.CreateContractAndSign(txCreateInfo, generated.OracleBin, generated.OracleABI, createPara, "oralce")
if nil != err {
return nil, err
}
......@@ -240,10 +313,9 @@ func createOracleTxAndSign(cmd *cobra.Command, from common.Address, valset, ethe
return oracleTx, nil
}
func createValsetTxAndSign(cmd *cobra.Command, from common.Address) (*utils.Chain33OfflineTx, error) {
contructParameter, _ := cmd.Flags().GetString("valset")
createPara := contructParameter
content, txHash, err := utils.CreateContractAndSign(getTxInfo(cmd), generated.ValsetBin, generated.ValsetABI, createPara, "valset")
func createValsetTxAndSign(txCreateInfo *utils.TxCreateInfo, valsetParameter string, from common.Address) (*utils.Chain33OfflineTx, error) {
createPara := valsetParameter
content, txHash, err := utils.CreateContractAndSign(txCreateInfo, generated.ValsetBin, generated.ValsetABI, createPara, "valset")
if nil != err {
return nil, err
}
......@@ -259,10 +331,10 @@ func createValsetTxAndSign(cmd *cobra.Command, from common.Address) (*utils.Chai
return valsetTx, nil
}
func createEthereumBridgeAndSign(cmd *cobra.Command, from common.Address, valset string) (*utils.Chain33OfflineTx, error) {
func createEthereumBridgeAndSign(txCreateInfo *utils.TxCreateInfo, from common.Address, valset string) (*utils.Chain33OfflineTx, error) {
operator := from.String()
createPara := fmt.Sprintf("%s,%s", operator, valset)
content, txHash, err := utils.CreateContractAndSign(getTxInfo(cmd), generated.EthereumBridgeBin, generated.EthereumBridgeABI, createPara, "EthereumBridge")
content, txHash, err := utils.CreateContractAndSign(txCreateInfo, generated.EthereumBridgeBin, generated.EthereumBridgeABI, createPara, "EthereumBridge")
if nil != err {
return nil, err
}
......@@ -278,8 +350,8 @@ func createEthereumBridgeAndSign(cmd *cobra.Command, from common.Address, valset
return ethereumBridgeTx, nil
}
func createMulSignAndSign(cmd *cobra.Command, from common.Address) (*utils.Chain33OfflineTx, error) {
content, txHash, err := utils.CreateContractAndSign(getTxInfo(cmd), generated.GnosisSafeBin, generated.GnosisSafeABI, "", "mulSign2chain33")
func createMulSignAndSign(txCreateInfo *utils.TxCreateInfo, from common.Address) (*utils.Chain33OfflineTx, error) {
content, txHash, err := utils.CreateContractAndSign(txCreateInfo, generated.GnosisSafeBin, generated.GnosisSafeABI, "", "mulSign2chain33")
if nil != err {
return nil, err
}
......@@ -295,18 +367,17 @@ func createMulSignAndSign(cmd *cobra.Command, from common.Address) (*utils.Chain
return mulSign2chain33Tx, nil
}
func configMultisignOfflineSaveAccount(cmd *cobra.Command, multisignContract, bridgebank string) (*utils.Chain33OfflineTx, error) {
func configMultisignOfflineSaveAccount(txCreateInfo *utils.TxCreateInfo, multisignContract, bridgebank string) (*utils.Chain33OfflineTx, error) {
parameter := fmt.Sprintf("configOfflineSaveAccount(%s)", multisignContract)
_, packData, err := evmAbi.Pack(parameter, generated.BridgeBankABI, false)
if nil != err {
fmt.Println("configOfflineSaveAccount", "Failed to do abi.Pack due to:", err.Error())
return nil, err
}
return createOfflineTx(cmd, packData, bridgebank, "configOfflineSaveAccount", time.Second*5)
return createOfflineTx(txCreateInfo, packData, bridgebank, "configOfflineSaveAccount", time.Second*5)
}
func multisignSetup(cmd *cobra.Command, multisignContract string) (*utils.Chain33OfflineTx, error) {
multisignAddrs, _ := cmd.Flags().GetString("multisignAddrs")
func multisignSetup(txCreateInfo *utils.TxCreateInfo, multisignAddrs string, multisignContract string) (*utils.Chain33OfflineTx, error) {
owners := strings.Split(multisignAddrs, ",")
BTYAddrChain33 := ebTypes.BTYAddrChain33
......@@ -323,5 +394,5 @@ func multisignSetup(cmd *cobra.Command, multisignContract string) (*utils.Chain3
return nil, err
}
return createOfflineTx(cmd, packData, multisignContract, "multisign_setup", time.Second*5)
return createOfflineTx(txCreateInfo, packData, multisignContract, "multisign_setup", time.Second*5)
}
......@@ -3,6 +3,7 @@ package offline
import (
"encoding/json"
"fmt"
tml "github.com/BurntSushi/toml"
"io/ioutil"
"os"
"time"
......@@ -22,6 +23,7 @@ func Boss4xOfflineCmd() *cobra.Command {
}
cmd.AddCommand(
CreateCrossBridgeCmd(),
CreateContractsWithFileCmd(),
SendSignTxs2Chain33Cmd(),
CreateERC20Cmd(),
ApproveErc20Cmd(),
......@@ -107,9 +109,9 @@ func paraseFile(file string, result interface{}) error {
return json.Unmarshal(b, result)
}
func createOfflineTx(cmd *cobra.Command, para []byte, contractAddr, name string, interval time.Duration) (*utils.Chain33OfflineTx, error) {
func createOfflineTx(txCreateInfo *utils.TxCreateInfo, para []byte, contractAddr, name string, interval time.Duration) (*utils.Chain33OfflineTx, error) {
action := &evmtypes.EVMContractAction{Amount: 0, GasLimit: 0, GasPrice: 0, Note: name, Para: para, ContractAddr: contractAddr}
content, txHash, err := utils.CallContractAndSign(getTxInfo(cmd), action, contractAddr)
content, txHash, err := utils.CallContractAndSign(txCreateInfo, action, contractAddr)
if nil != err {
return nil, err
}
......@@ -126,7 +128,7 @@ func createOfflineTx(cmd *cobra.Command, para []byte, contractAddr, name string,
}
func callContractAndSignWrite(cmd *cobra.Command, para []byte, contractAddr, name string) {
Tx, err := createOfflineTx(cmd, para, contractAddr, name, 0)
Tx, err := createOfflineTx(getTxInfo(cmd), para, contractAddr, name, 0)
if nil != err {
fmt.Println("CallContractAndSign", "Failed", err.Error(), "name", name)
return
......@@ -145,3 +147,11 @@ func callContractAndSignWrite(cmd *cobra.Command, para []byte, contractAddr, nam
fmt.Printf("Write all the txs to file: %s \n", fileName)
utils.WriteToFileInJson(fileName, txs)
}
func InitCfg(filepath string, cfg interface{}) {
if _, err := tml.DecodeFile(filepath, cfg); err != nil {
fmt.Println(err)
os.Exit(-1)
}
return
}
......@@ -108,7 +108,6 @@ func DeployContrcts(cmd *cobra.Command, args []string) {
}
func InitCfg(filepath string, cfg interface{}) {
if _, err := tml.DecodeFile(filepath, cfg); err != nil {
fmt.Println(err)
os.Exit(-1)
......
......@@ -3,7 +3,7 @@ operatorAddr="0x8afdadfc88a1087c9a1d6c0f5dd04634b87f303a"
# 验证人地址,至少配置3个以上,即大于等于3个
validatorsAddr=["0x8afdadfc88a1087c9a1d6c0f5dd04634b87f303a", "0x0df9a824699bc5878232c9e612fe1a5346a5a368", "0xcb074cb21cdddf3ce9c3c0a7ac4497d633c9d9f1", "0xd9dab021e74ecf475788ed7b61356056b2095830"]
# 验证人权重
initPowers=[96, 1, 1, 1]
initPowers=[25, 25, 25, 25]
# 主链symbol
symbol="ETH"
# 离线多签地址
......
......@@ -505,7 +505,7 @@ func CreateWithFileCmd() *cobra.Command {
}
func addCreateWithFileFlags(cmd *cobra.Command) {
cmd.Flags().StringP("conf", "c", "", "config file")
cmd.Flags().StringP("conf", "f", "", "config file")
_ = cmd.MarkFlagRequired("conf")
}
......
......@@ -50,7 +50,7 @@ tx is written to file: deploytxs.txt
把交易信息写入文件中
```
##### 文件部署
把要部署需要的数据写入 deploy.toml 配置文件
把要部署需要的数据写入 deploy_ethereum.toml 配置文件
```toml
# 合约部署人
operatorAddr="0x8afdadfc88a1087c9a1d6c0f5dd04634b87f303a"
......@@ -65,7 +65,7 @@ multisignAddrs=["0x4c85848a7E2985B76f06a7Ed338FCB3aF94a7DCf", "0x6F163E6daf0090D
```
命令:
```shell
./boss4x ethereum offline create_file -c deploy.toml
./boss4x ethereum offline create_file -c deploy_ethereum.toml
```
* 离线签名交易
......
......@@ -30,6 +30,8 @@ cp ../ebrelayer/relayer.toml "${OUT_DIR}/relayer.toml"
cp ./build/* "${OUT_DIR}"
cp ./build/abi/* "${OUT_DIR}"
cp ./build/public/* "${OUT_DIR}"
cp ../../cross2eth/boss4x/chain33/deploy_chain33.toml "${OUT_DIR}"
cp ../../cross2eth/boss4x/ethereum/deploy_ethereum.toml "${OUT_DIR}"
OUT_TESTDIR="${1}/dapptest/$strapp"
mkdir -p "${OUT_TESTDIR}"
......
......@@ -854,7 +854,7 @@ function get_cli() {
CLID="docker exec ${dockerNamePrefix}_ebrelayerd_1 /root/ebcli_A"
docker_ganachetest_ip=$(get_docker_addr "${dockerNamePrefix}_ganachetest_1")
Boss4xCLI="docker exec ${dockerNamePrefix}_ebrelayera_1 /root/boss4x --rpc_laddr http://${docker_chain33_ip}:8901 --rpc_laddr_ethereum http://${docker_ganachetest_ip}:8545 --paraName user.p.para. --chainID ${chain33ID} --chainEthId 0"
Boss4xCLI="docker exec ${dockerNamePrefix}_ebrelayera_1 /root/boss4x --rpc_laddr http://${docker_chain33_ip}:8901 --rpc_laddr_ethereum http://${docker_ganachetest_ip}:8545 --paraName user.p.para. --chainID ${chain33ID} --chainEthId 1337"
}
}
......
......@@ -53,7 +53,6 @@ CLIA="./ebcli_A"
CLIB="./ebcli_B"
CLIC="./ebcli_C"
CLID="./ebcli_D"
chain33ID=0
function kill_ebrelayerC() {
kill_ebrelayer ./relayer_C/ebrelayer
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment