Commit ad309811 authored by QM's avatar QM

Merge remote-tracking branch 'upstream/master' into issues898_para_add_supervision

parents 28e5ae03 93df499c
...@@ -768,8 +768,12 @@ func (cs *ConsensusState) createProposalBlock() (block *ttypes.TendermintBlock) ...@@ -768,8 +768,12 @@ func (cs *ConsensusState) createProposalBlock() (block *ttypes.TendermintBlock)
// Mempool validated transactions // Mempool validated transactions
beg := time.Now() beg := time.Now()
pblock := cs.client.BuildBlock() pblock := cs.client.BuildBlock()
if pblock == nil {
tendermintlog.Error("createProposalBlock BuildBlock fail")
return nil
}
tendermintlog.Info(fmt.Sprintf("createProposalBlock BuildBlock. Current: %v/%v/%v", cs.Height, cs.Round, cs.Step), tendermintlog.Info(fmt.Sprintf("createProposalBlock BuildBlock. Current: %v/%v/%v", cs.Height, cs.Round, cs.Step),
"txs-len", len(pblock.Txs), "cost", types.Since(beg)) "height", pblock.Height, "txs-len", len(pblock.Txs), "cost", types.Since(beg))
if pblock.Height != cs.Height { if pblock.Height != cs.Height {
tendermintlog.Error("pblock.Height is not equal to cs.Height") tendermintlog.Error("pblock.Height is not equal to cs.Height")
......
...@@ -25,7 +25,6 @@ const ( ...@@ -25,7 +25,6 @@ const (
tryListenSeconds = 5 tryListenSeconds = 5
handshakeTimeout = 20 // * time.Second, handshakeTimeout = 20 // * time.Second,
maxSendQueueSize = 1024 maxSendQueueSize = 1024
minSendQueueSize = 10
defaultSendTimeout = 60 * time.Second defaultSendTimeout = 60 * time.Second
//MaxMsgPacketPayloadSize define //MaxMsgPacketPayloadSize define
MaxMsgPacketPayloadSize = 10 * 1024 * 1024 MaxMsgPacketPayloadSize = 10 * 1024 * 1024
...@@ -153,7 +152,7 @@ func NewNode(seeds []string, protocol string, lAddr string, privKey crypto.PrivK ...@@ -153,7 +152,7 @@ func NewNode(seeds []string, protocol string, lAddr string, privKey crypto.PrivK
dialing: NewMutexMap(), dialing: NewMutexMap(),
reconnecting: NewMutexMap(), reconnecting: NewMutexMap(),
broadcastChannel: make(chan MsgInfo, maxSendQueueSize), broadcastChannel: make(chan MsgInfo, maxSendQueueSize),
unicastChannel: make(chan MsgInfo, minSendQueueSize), unicastChannel: make(chan MsgInfo, maxSendQueueSize),
state: state, state: state,
localIPs: make(map[string]net.IP), localIPs: make(map[string]net.IP),
} }
......
...@@ -481,7 +481,7 @@ FOR_LOOP: ...@@ -481,7 +481,7 @@ FOR_LOOP:
pc.sendBuffer = append(pc.sendBuffer, bytes...) pc.sendBuffer = append(pc.sendBuffer, bytes...)
if len+5 > MaxMsgPacketPayloadSize { if len+5 > MaxMsgPacketPayloadSize {
pc.sendBuffer = append(pc.sendBuffer, bytes[MaxMsgPacketPayloadSize-5:]...) tendermintlog.Info("packet exceed max size", "len", len+5)
} }
_, err = pc.bufWriter.Write(pc.sendBuffer[:len+5]) _, err = pc.bufWriter.Write(pc.sendBuffer[:len+5])
if err != nil { if err != nil {
...@@ -688,29 +688,23 @@ OUTER_LOOP: ...@@ -688,29 +688,23 @@ OUTER_LOOP:
// If the peer is on a previous height, help catch up. // If the peer is on a previous height, help catch up.
if (0 < prs.Height) && (prs.Height < rs.Height) { if (0 < prs.Height) && (prs.Height < rs.Height) {
if prs.ProposalBlockHash == nil || prs.ProposalBlock { time.Sleep(2 * pc.myState.PeerGossipSleep())
time.Sleep(pc.myState.PeerGossipSleep()) if prs.Height >= rs.Height {
continue OUTER_LOOP continue OUTER_LOOP
} }
tendermintlog.Info("help catch up", "peerip", pc.ip.String(), "selfHeight", rs.Height, "peerHeight", prs.Height)
proposalBlock := pc.myState.client.LoadProposalBlock(prs.Height) proposalBlock := pc.myState.client.LoadProposalBlock(prs.Height)
newBlock := &ttypes.TendermintBlock{TendermintBlock: proposalBlock}
if proposalBlock == nil { if proposalBlock == nil {
tendermintlog.Error("Fail to load propsal block", "selfHeight", rs.Height, tendermintlog.Error("load proposal block fail", "selfHeight", rs.Height,
"blockstoreHeight", pc.myState.client.GetCurrentHeight()) "blockHeight", pc.myState.client.GetCurrentHeight())
time.Sleep(pc.myState.PeerGossipSleep())
continue OUTER_LOOP
} else if !bytes.Equal(newBlock.Hash(), prs.ProposalBlockHash) {
tendermintlog.Error("Peer ProposalBlockHash mismatch", "ProposalBlockHash", fmt.Sprintf("%X", prs.ProposalBlockHash),
"newBlockHash", fmt.Sprintf("%X", newBlock.Hash()))
time.Sleep(pc.myState.PeerGossipSleep())
continue OUTER_LOOP continue OUTER_LOOP
} }
newBlock := &ttypes.TendermintBlock{TendermintBlock: proposalBlock}
msg := MsgInfo{TypeID: ttypes.ProposalBlockID, Msg: proposalBlock, PeerID: pc.id, PeerIP: pc.ip.String()} msg := MsgInfo{TypeID: ttypes.ProposalBlockID, Msg: proposalBlock, PeerID: pc.id, PeerIP: pc.ip.String()}
tendermintlog.Info("Sending block for catchup", "peerip", pc.ip.String(), "block(H/R)", tendermintlog.Info("Sending block for catchup", "peerip", pc.ip.String(),
fmt.Sprintf("%v/%v", proposalBlock.Header.Height, proposalBlock.Header.Round)) "selfHeight", rs.Height, "peerHeight", prs.Height, "block(H/R/hash)",
if pc.Send(msg) { fmt.Sprintf("%v/%v/%X", proposalBlock.Header.Height, proposalBlock.Header.Round, newBlock.Hash()))
prs.SetHasProposalBlock(newBlock) if !pc.Send(msg) {
tendermintlog.Error("send catchup block fail")
} }
continue OUTER_LOOP continue OUTER_LOOP
} }
......
...@@ -473,9 +473,29 @@ func (client *Client) StopC() <-chan struct{} { ...@@ -473,9 +473,29 @@ func (client *Client) StopC() <-chan struct{} {
return client.stopC return client.stopC
} }
// GetMempoolSize get tx num in mempool
func (client *Client) GetMempoolSize() int64 {
msg := client.GetQueueClient().NewMessage("mempool", types.EventGetMempoolSize, nil)
err := client.GetQueueClient().Send(msg, true)
if err != nil {
tendermintlog.Error("GetMempoolSize send", "err", err)
return 0
}
resp, err := client.GetQueueClient().Wait(msg)
if err != nil {
tendermintlog.Error("GetMempoolSize result", "err", err)
return 0
}
return resp.GetData().(*types.MempoolSize).GetSize()
}
// CheckTxsAvailable check whether some new transactions arriving // CheckTxsAvailable check whether some new transactions arriving
func (client *Client) CheckTxsAvailable(height int64) bool { func (client *Client) CheckTxsAvailable(height int64) bool {
txs := client.RequestTx(10, nil) num := client.GetMempoolSize()
if num == 0 {
return false
}
txs := client.RequestTx(int(num), nil)
txs = client.CheckTxDup(txs, height) txs = client.CheckTxDup(txs, height)
return len(txs) != 0 return len(txs) != 0
} }
...@@ -493,7 +513,11 @@ func (client *Client) CheckTxDup(txs []*types.Transaction, height int64) (transa ...@@ -493,7 +513,11 @@ func (client *Client) CheckTxDup(txs []*types.Transaction, height int64) (transa
// BuildBlock build a new block // BuildBlock build a new block
func (client *Client) BuildBlock() *types.Block { func (client *Client) BuildBlock() *types.Block {
lastBlock := client.GetCurrentBlock() lastBlock, err := client.RequestLastBlock()
if err != nil {
tendermintlog.Error("BuildBlock fail", "err", err)
return nil
}
cfg := client.GetAPI().GetConfig() cfg := client.GetAPI().GetConfig()
txs := client.RequestTx(int(cfg.GetP(lastBlock.Height+1).MaxTxNumber)-1, nil) txs := client.RequestTx(int(cfg.GetP(lastBlock.Height+1).MaxTxNumber)-1, nil)
// placeholder // placeholder
......
...@@ -74,7 +74,7 @@ func main() { ...@@ -74,7 +74,7 @@ func main() {
// LoadHelp ... // LoadHelp ...
func LoadHelp() { func LoadHelp() {
fmt.Println("Available Commands:") fmt.Println("Available Commands:")
fmt.Println("perf [ip, size, num, interval, duration] {offset} : 写数据性能测试") fmt.Println("perf [ip, size, num, interval, duration] : 写数据性能测试")
fmt.Println("put [ip, size] : 写数据") fmt.Println("put [ip, size] : 写数据")
fmt.Println("get [ip, hash] : 读数据") fmt.Println("get [ip, hash] : 读数据")
fmt.Println("valnode [ip, pubkey, power] : 增加/删除/修改tendermint节点") fmt.Println("valnode [ip, pubkey, power] : 增加/删除/修改tendermint节点")
......
...@@ -47,7 +47,7 @@ const ( ...@@ -47,7 +47,7 @@ const (
//VoteFrozenTime = 3 * 24 * 3600 //VoteFrozenTime = 3 * 24 * 3600
//RegistFrozenCoins 注册为候选节点需要抵押冻结的代币数量 //RegistFrozenCoins 注册为候选节点需要抵押冻结的代币数量
RegistFrozenCoins = 1000000000000 RegistFrozenCoins int64 = 1000000000000
//VoteTypeNone 非投票类型 //VoteTypeNone 非投票类型
VoteTypeNone int32 = 1 VoteTypeNone int32 = 1
......
FROM ubuntu:16.04 FROM ubuntu:16.04
WORKDIR /root WORKDIR /root
COPY relayer.toml relayer.toml
COPY ebrelayer ebrelayer COPY ebrelayer ebrelayer
COPY ebcli_A ebcli_A COPY ebcli_A ebcli_A
COPY sleep.sh sleep.sh
EXPOSE 20000 CMD ["/root/sleep.sh"]
CMD ["/root/ebrelayer"]
...@@ -31,18 +31,23 @@ tokenAddrBty="" ...@@ -31,18 +31,23 @@ tokenAddrBty=""
tokenAddr="" tokenAddr=""
ethUrl="" ethUrl=""
Chain33Cli="" Chain33Cli=""
portRelayer=20000
function kill_ebrelayerC() { function kill_ebrelayerC() {
#shellcheck disable=SC2154 #shellcheck disable=SC2154
docker stop "${dockerNamePrefix}_ebrelayerc_1" kill_docker_ebrelayer "${dockerNamePrefix}_ebrelayerc_1"
} }
function kill_ebrelayerD() { function kill_ebrelayerD() {
docker stop "${dockerNamePrefix}_ebrelayerd_1" kill_docker_ebrelayer "${dockerNamePrefix}_ebrelayerd_1"
}
function start_ebrelayerA() {
docker cp "./relayer.toml" "${dockerNamePrefix}_ebrelayera_1":/root/relayer.toml
start_docker_ebrelayer "${dockerNamePrefix}_ebrelayera_1" "/root/ebrelayer" "./ebrelayera.log"
sleep 5
} }
function start_ebrelayerC() { function start_ebrelayerC() {
docker start "${dockerNamePrefix}_ebrelayerc_1" start_docker_ebrelayer "${dockerNamePrefix}_ebrelayerc_1" "/root/ebrelayer" "./ebrelayerc.log"
sleep 5 sleep 5
${CLIC} relayer unlock -p 123456hzj ${CLIC} relayer unlock -p 123456hzj
sleep 5 sleep 5
...@@ -50,7 +55,7 @@ function start_ebrelayerC() { ...@@ -50,7 +55,7 @@ function start_ebrelayerC() {
sleep 10 sleep 10
} }
function start_ebrelayerD() { function start_ebrelayerD() {
docker start "${dockerNamePrefix}_ebrelayerd_1" start_docker_ebrelayer "${dockerNamePrefix}_ebrelayerd_1" "/root/ebrelayer" "./ebrelayerd.log"
sleep 5 sleep 5
${CLID} relayer unlock -p 123456hzj ${CLID} relayer unlock -p 123456hzj
sleep 5 sleep 5
...@@ -72,42 +77,17 @@ function InitAndDeploy() { ...@@ -72,42 +77,17 @@ function InitAndDeploy() {
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}" echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
} }
function port_exist() {
local prot_ori=${portRelayer}
grep_port=$(netstat -tlpn | grep "\b${portRelayer}\b")
while [ -n "$grep_port" ]; do
echo "port $portRelayer is in use"
portRelayer=$((portRelayer + 4))
grep_port=$(netstat -tlpn | grep "\b${portRelayer}\b")
done
if [ "${portRelayer}" != "${prot_ori}" ]; then
sed -i 's/'"${prot_ori}"'/'"${portRelayer}"'/g' "./docker-compose-ebrelayer.yml"
fi
}
function StartRelayerAndDeploy() { function StartRelayerAndDeploy() {
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}" echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
# stop all docker
docker-compose -f docker-compose-ebrelayer.yml down
for name in b c d; do
docker-compose -f "docker-compose-ebrelayer${name}.yml" down
done
# change EthProvider url # change EthProvider url
dockerAddr=$(get_docker_addr "${dockerNamePrefix}_ganachetest_1") dockerAddr=$(get_docker_addr "${dockerNamePrefix}_ganachetest_1")
ethUrl="http://${dockerAddr}:8545" ethUrl="http://${dockerAddr}:8545"
# shellcheck disable=SC2155 # 修改 relayer.toml 配置文件
local line=$(delete_line_show "./relayer.toml" 'EthProvider="ws:') updata_relayer_a_toml "${dockerAddr}" "${dockerNamePrefix}_ebrelayera_1" "./relayer.toml"
sed -i ''"${line}"' a EthProvider="ws://'"${dockerAddr}"':8545/"' "./relayer.toml" # start ebrelayer A
start_ebrelayerA
line=$(delete_line_show "./relayer.toml" 'EthProviderCli="http:')
sed -i ''"${line}"' a EthProviderCli="http://'"${dockerAddr}"':8545"' "./relayer.toml"
port_exist
docker-compose -f docker-compose-ebrelayer.yml up --build -d
sleep 1
# 部署合约 # 部署合约
InitAndDeploy InitAndDeploy
...@@ -115,19 +95,38 @@ function StartRelayerAndDeploy() { ...@@ -115,19 +95,38 @@ function StartRelayerAndDeploy() {
result=$(${CLIA} relayer ethereum bridgeRegistry) result=$(${CLIA} relayer ethereum bridgeRegistry)
BridgeRegistry=$(cli_ret "${result}" "bridgeRegistry" ".addr") BridgeRegistry=$(cli_ret "${result}" "bridgeRegistry" ".addr")
# kill_ebrelayer "./A/ebrelayer" # kill ebrelayer A
docker-compose -f docker-compose-ebrelayer.yml down kill_docker_ebrelayer "${dockerNamePrefix}_ebrelayera_1"
sleep 1
# 修改 relayer.toml 配置文件 # 修改 relayer.toml 配置文件
port_exist
updata_relayer_toml "${BridgeRegistry}" ${maturityDegree} "./relayer.toml" updata_relayer_toml "${BridgeRegistry}" ${maturityDegree} "./relayer.toml"
updata_docker_relayer_toml "${portRelayer}" # 重启
start_ebrelayerA
docker-compose -f docker-compose-ebrelayer.yml up --build -d # start ebrelayer B C D
for name in b c d; do for name in b c d; do
docker-compose -f "docker-compose-ebrelayer$name.yml" up --build -d local file="./relayer$name.toml"
cp './relayer.toml' "${file}"
# 删除配置文件中不需要的字段
for deleteName in "deployerPrivateKey" "operatorAddr" "validatorsAddr" "initPowers" "deployerPrivateKey" "deploy"; do
delete_line "${file}" "${deleteName}"
done
sed -i 's/x2ethereum/x2ethereum'${name}'/g' "${file}"
pushHost=$(get_docker_addr "${dockerNamePrefix}_ebrelayer${name}_1")
line=$(delete_line_show "${file}" "pushHost")
sed -i ''"${line}"' a pushHost="http://'"${pushHost}"':20000"' "${file}"
line=$(delete_line_show "${file}" "pushBind")
sed -i ''"${line}"' a pushBind="'"${pushHost}"':20000"' "${file}"
docker cp "${file}" "${dockerNamePrefix}_ebrelayer${name}_1":/root/relayer.toml
start_docker_ebrelayer "${dockerNamePrefix}_ebrelayer${name}_1" "/root/ebrelayer" "./ebrelayer${name}.log"
done done
sleep 1 sleep 5
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}" echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
} }
......
version: '3'
services:
ebrelayera:
build:
context: .
dockerfile: Dockerfile-x2ethrelay
ports:
- "20000:20000"
#!/usr/bin/env bash
# shellcheck disable=SC2050
# shellcheck source=/dev/null
set -x
set +e
while [ 1 == 1 ]; do
sleep 100
done
...@@ -28,13 +28,13 @@ ethReceiverAddrKey1="355b876d7cbcb930d5dfab767f66336ce327e082cbaa1877210c1bae89b ...@@ -28,13 +28,13 @@ ethReceiverAddrKey1="355b876d7cbcb930d5dfab767f66336ce327e082cbaa1877210c1bae89b
ethReceiverAddr2="0x0c05ba5c230fdaa503b53702af1962e08d0c60bf" ethReceiverAddr2="0x0c05ba5c230fdaa503b53702af1962e08d0c60bf"
#ethReceiverAddrKey2="9dc6df3a8ab139a54d8a984f54958ae0661f880229bf3bdbb886b87d58b56a08" #ethReceiverAddrKey2="9dc6df3a8ab139a54d8a984f54958ae0661f880229bf3bdbb886b87d58b56a08"
maturityDegree=5 maturityDegree=5
portRelayer=19999 #portRelayer=19999
ethUrl="" ethUrl=""
CLIA_HTTP="http://127.0.0.1:9901" CLIA_HTTP=""
CLIB_HTTP="http://127.0.0.1:9902" CLIB_HTTP=""
CLIC_HTTP="http://127.0.0.1:9903" CLIC_HTTP=""
CLID_HTTP="http://127.0.0.1:9904" CLID_HTTP=""
# $1 sendAddress, $2 balance # $1 sendAddress, $2 balance
function queryExecBalance() { function queryExecBalance() {
...@@ -77,6 +77,12 @@ function queryChain33X2ethBalance() { ...@@ -77,6 +77,12 @@ function queryChain33X2ethBalance() {
fi fi
} }
function start_ebrelayerA() {
docker cp "./x2ethereum/relayer.toml" "${dockerNamePrefix}_ebrelayera_rpc_1":/root/relayer.toml
start_docker_ebrelayer "${dockerNamePrefix}_ebrelayera_rpc_1" "/root/ebrelayer" "./x2ethereum/ebrelayera.log"
sleep 5
}
function StartRelayerAndDeploy() { function StartRelayerAndDeploy() {
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}" echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
...@@ -93,31 +99,13 @@ function StartRelayerAndDeploy() { ...@@ -93,31 +99,13 @@ function StartRelayerAndDeploy() {
dockerAddr=$(get_docker_addr "${dockerNamePrefix}_ganachetest_rpc_1") dockerAddr=$(get_docker_addr "${dockerNamePrefix}_ganachetest_rpc_1")
ethUrl="http://${dockerAddr}:8545" ethUrl="http://${dockerAddr}:8545"
# shellcheck disable=SC2155 # 修改 relayer.toml 配置文件
local line=$(delete_line_show "./x2ethereum/relayer.toml" 'EthProvider="ws:') updata_relayer_a_toml "${dockerAddr}" "${dockerNamePrefix}_ebrelayera_rpc_1" "./x2ethereum/relayer.toml"
sed -i ''"${line}"' a EthProvider="ws://'"${dockerAddr}"':8545/"' "./x2ethereum/relayer.toml"
line=$(delete_line_show "./x2ethereum/relayer.toml" 'EthProviderCli="http:')
sed -i ''"${line}"' a EthProviderCli="http://'"${dockerAddr}"':8545"' "./x2ethereum/relayer.toml"
grep_port=$(netstat -tlpn | grep "\b${portRelayer}\b")
while [ -n "$grep_port" ]; do
echo "port $portRelayer is in use"
portRelayer=$((portRelayer - 4))
grep_port=$(netstat -tlpn | grep "\b${portRelayer}\b")
done
line=$(delete_line_show "./x2ethereum/docker-compose-ebrelayer.yml" "20000:20000")
sed -i ''"${line}"' a \ \ \ \ \ \ -\ "'${portRelayer}':'${portRelayer}'"' "./x2ethereum/docker-compose-ebrelayer.yml"
line=$(delete_line_show "./x2ethereum/docker-compose-ebrelayer.yml" "ebrelayera:")
sed -i ''"${line}"' a \ \ ebrelayera_rpc:' "./x2ethereum/docker-compose-ebrelayer.yml"
line=$(delete_line_show "./x2ethereum/relayer.toml" "localhost:9901") line=$(delete_line_show "./x2ethereum/relayer.toml" "localhost:9901")
sed -i ''"${line}"' a JrpcBindAddr=":9901"' "./x2ethereum/relayer.toml" sed -i ''"${line}"' a JrpcBindAddr=":9901"' "./x2ethereum/relayer.toml"
# start ebrelayer A
docker-compose -f ./x2ethereum/docker-compose-ebrelayer.yml up --build -d start_ebrelayerA
sleep 1
ebrelayeraRpcHost=$(get_docker_addr "${dockerNamePrefix}_ebrelayera_rpc_1") ebrelayeraRpcHost=$(get_docker_addr "${dockerNamePrefix}_ebrelayera_rpc_1")
if [[ ${ebrelayeraRpcHost} == "" ]]; then if [[ ${ebrelayeraRpcHost} == "" ]]; then
...@@ -133,17 +121,38 @@ function StartRelayerAndDeploy() { ...@@ -133,17 +121,38 @@ function StartRelayerAndDeploy() {
chain33_Http "$req" "${CLIA_HTTP}" '(.error|not) and (.result != null)' "$FUNCNAME" ".result.addr" chain33_Http "$req" "${CLIA_HTTP}" '(.error|not) and (.result != null)' "$FUNCNAME" ".result.addr"
local BridgeRegistry="$RETURN_RESP" local BridgeRegistry="$RETURN_RESP"
docker-compose -f ./x2ethereum/docker-compose-ebrelayer.yml down # kill ebrelayer A
kill_docker_ebrelayer "${dockerNamePrefix}_ebrelayera_rpc_1"
sleep 1
# 修改 relayer.toml 配置文件 # 修改 relayer.toml 配置文件
updata_relayer_toml_rpc "${BridgeRegistry}" "${maturityDegree}" "${MAIN_HTTP}" "./x2ethereum/relayer.toml" updata_relayer_toml "${BridgeRegistry}" ${maturityDegree} "./x2ethereum/relayer.toml"
updata_docker_relayer_toml_rpc ${portRelayer} # 重启
start_ebrelayerA
docker-compose -f "./x2ethereum/docker-compose-ebrelayer.yml" up --build -d # start ebrelayer B C D
for name in b c d; do for name in b c d; do
docker-compose -f "./x2ethereum/docker-compose-ebrelayer$name.yml" down local file="./x2ethereum/relayer$name.toml"
docker-compose -f "./x2ethereum/docker-compose-ebrelayer$name.yml" up --build -d cp './x2ethereum/relayer.toml' "${file}"
# 删除配置文件中不需要的字段
for deleteName in "deployerPrivateKey" "operatorAddr" "validatorsAddr" "initPowers" "deployerPrivateKey" "deploy"; do
delete_line "${file}" "${deleteName}"
done
sed -i 's/x2ethereum/x2ethereum'${name}'/g' "${file}"
pushHost=$(get_docker_addr "${dockerNamePrefix}_ebrelayer${name}_rpc_1")
line=$(delete_line_show "${file}" "pushHost")
sed -i ''"${line}"' a pushHost="http://'"${pushHost}"':20000"' "${file}"
line=$(delete_line_show "${file}" "pushBind")
sed -i ''"${line}"' a pushBind="'"${pushHost}"':20000"' "${file}"
docker cp "${file}" "${dockerNamePrefix}_ebrelayer${name}_rpc_1":/root/relayer.toml
start_docker_ebrelayer "${dockerNamePrefix}_ebrelayer${name}_rpc_1" "/root/ebrelayer" "./x2ethereum/ebrelayer${name}.log"
done done
sleep 1 sleep 5
ebrelayeraRpcHost=$(get_docker_addr "${dockerNamePrefix}_ebrelayera_rpc_1") ebrelayeraRpcHost=$(get_docker_addr "${dockerNamePrefix}_ebrelayera_rpc_1")
CLIA_HTTP="http://${ebrelayeraRpcHost}:9901" CLIA_HTTP="http://${ebrelayeraRpcHost}:9901"
...@@ -223,7 +232,6 @@ function EthImportKey() { ...@@ -223,7 +232,6 @@ function EthImportKey() {
# 解锁 # 解锁
local req='{"method":"Manager.SetPassphase","params":[{"Passphase":"123456hzj"}]}' local req='{"method":"Manager.SetPassphase","params":[{"Passphase":"123456hzj"}]}'
chain33_Http "$req" "${CLIA_HTTP}" '(.error|not) and (.result != null)' "SetPassphase" ".result"
chain33_Http "$req" "${CLIB_HTTP}" '(.error|not) and (.result != null)' "SetPassphase" ".result" chain33_Http "$req" "${CLIB_HTTP}" '(.error|not) and (.result != null)' "SetPassphase" ".result"
chain33_Http "$req" "${CLIC_HTTP}" '(.error|not) and (.result != null)' "SetPassphase" ".result" chain33_Http "$req" "${CLIC_HTTP}" '(.error|not) and (.result != null)' "SetPassphase" ".result"
chain33_Http "$req" "${CLID_HTTP}" '(.error|not) and (.result != null)' "SetPassphase" ".result" chain33_Http "$req" "${CLID_HTTP}" '(.error|not) and (.result != null)' "SetPassphase" ".result"
......
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