add cmd flag for rpc api modules (#821)
* add cmd flag for rpc api modules * fix test-contract race condition by sleeping
This commit is contained in:
parent
99112e1cbd
commit
d1e22e1544
85
rpc/apis.go
85
rpc/apis.go
@ -21,46 +21,67 @@ const (
|
||||
EthNamespace = "eth"
|
||||
PersonalNamespace = "personal"
|
||||
NetNamespace = "net"
|
||||
flagRPCAPI = "rpc-api"
|
||||
|
||||
apiVersion = "1.0"
|
||||
)
|
||||
|
||||
// GetAPIs returns the list of all APIs from the Ethereum namespaces
|
||||
func GetAPIs(clientCtx context.CLIContext, keys ...ethsecp256k1.PrivKey) []rpc.API {
|
||||
func GetAPIs(clientCtx context.CLIContext, selectedApis []string, keys ...ethsecp256k1.PrivKey) []rpc.API {
|
||||
nonceLock := new(rpctypes.AddrLocker)
|
||||
backend := backend.New(clientCtx)
|
||||
ethAPI := eth.NewAPI(clientCtx, backend, nonceLock, keys...)
|
||||
|
||||
return []rpc.API{
|
||||
{
|
||||
Namespace: Web3Namespace,
|
||||
Version: apiVersion,
|
||||
Service: web3.NewAPI(),
|
||||
Public: true,
|
||||
},
|
||||
{
|
||||
Namespace: EthNamespace,
|
||||
Version: apiVersion,
|
||||
Service: ethAPI,
|
||||
Public: true,
|
||||
},
|
||||
{
|
||||
Namespace: EthNamespace,
|
||||
Version: apiVersion,
|
||||
Service: filters.NewAPI(clientCtx, backend),
|
||||
Public: true,
|
||||
},
|
||||
{
|
||||
Namespace: PersonalNamespace,
|
||||
Version: apiVersion,
|
||||
Service: personal.NewAPI(ethAPI),
|
||||
Public: false,
|
||||
},
|
||||
{
|
||||
Namespace: NetNamespace,
|
||||
Version: apiVersion,
|
||||
Service: net.NewAPI(clientCtx),
|
||||
Public: true,
|
||||
},
|
||||
var apis []rpc.API
|
||||
|
||||
for _, api := range selectedApis {
|
||||
switch api {
|
||||
case Web3Namespace:
|
||||
apis = append(apis,
|
||||
rpc.API{
|
||||
Namespace: Web3Namespace,
|
||||
Version: apiVersion,
|
||||
Service: web3.NewAPI(),
|
||||
Public: true,
|
||||
},
|
||||
)
|
||||
case EthNamespace:
|
||||
apis = append(apis,
|
||||
rpc.API{
|
||||
Namespace: EthNamespace,
|
||||
Version: apiVersion,
|
||||
Service: ethAPI,
|
||||
Public: true,
|
||||
},
|
||||
)
|
||||
apis = append(apis,
|
||||
rpc.API{
|
||||
Namespace: EthNamespace,
|
||||
Version: apiVersion,
|
||||
Service: filters.NewAPI(clientCtx, backend),
|
||||
Public: true,
|
||||
},
|
||||
)
|
||||
case PersonalNamespace:
|
||||
apis = append(apis,
|
||||
rpc.API{
|
||||
Namespace: PersonalNamespace,
|
||||
Version: apiVersion,
|
||||
Service: personal.NewAPI(ethAPI),
|
||||
Public: false,
|
||||
},
|
||||
)
|
||||
case NetNamespace:
|
||||
apis = append(apis,
|
||||
rpc.API{
|
||||
Namespace: NetNamespace,
|
||||
Version: apiVersion,
|
||||
Service: net.NewAPI(clientCtx),
|
||||
Public: true,
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
return apis
|
||||
}
|
||||
|
@ -1,6 +1,8 @@
|
||||
package rpc
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/client/flags"
|
||||
"github.com/cosmos/cosmos-sdk/client/lcd"
|
||||
"github.com/cosmos/cosmos-sdk/codec"
|
||||
@ -11,6 +13,7 @@ import (
|
||||
// Cosmos rest-server endpoints
|
||||
func ServeCmd(cdc *codec.Codec) *cobra.Command {
|
||||
cmd := lcd.ServeCommand(cdc, RegisterRoutes)
|
||||
cmd.Flags().String(flagRPCAPI, "", fmt.Sprintf("Comma separated list of RPC API modules to enable: %s, %s, %s, %s", Web3Namespace, EthNamespace, PersonalNamespace, NetNamespace))
|
||||
cmd.Flags().String(flagUnlockKey, "", "Select a key to unlock on the RPC server")
|
||||
cmd.Flags().String(flagWebsocket, "8546", "websocket port to listen to")
|
||||
cmd.Flags().StringP(flags.FlagBroadcastMode, "b", flags.BroadcastSync, "Transaction broadcasting mode (sync|async|block)")
|
||||
|
@ -58,7 +58,11 @@ func RegisterRoutes(rs *lcd.RestServer) {
|
||||
}
|
||||
}
|
||||
|
||||
apis := GetAPIs(rs.CliCtx, privkeys...)
|
||||
rpcapi := viper.GetString(flagRPCAPI)
|
||||
rpcapi = strings.ReplaceAll(rpcapi, " ", "")
|
||||
rpcapiArr := strings.Split(rpcapi, ",")
|
||||
|
||||
apis := GetAPIs(rs.CliCtx, rpcapiArr, privkeys...)
|
||||
|
||||
// Register all the APIs exposed by the namespace services
|
||||
// TODO: handle allowlist and private APIs
|
||||
|
@ -49,13 +49,13 @@ $PWD/build/ethermintd start --pruning=nothing --rpc.unsafe --log_level "main:inf
|
||||
sleep 1
|
||||
|
||||
# Start the rest server with unlocked key in background and log to file
|
||||
$PWD/build/ethermintcli rest-server --laddr "tcp://localhost:8545" --unlock-key $KEY --chain-id $CHAINID --trace > ethermintcli.log &
|
||||
$PWD/build/ethermintcli rest-server --laddr "tcp://localhost:8545" --unlock-key $KEY --chain-id $CHAINID --trace --rpc-api="web3,eth,net,personal" > ethermintcli.log &
|
||||
|
||||
solcjs --abi $PWD/tests-solidity/suites/basic/contracts/Counter.sol --bin -o $PWD/tests-solidity/suites/basic/counter
|
||||
mv $PWD/tests-solidity/suites/basic/counter/*.abi $PWD/tests-solidity/suites/basic/counter/counter_sol.abi 2> /dev/null
|
||||
mv $PWD/tests-solidity/suites/basic/counter/*.bin $PWD/tests-solidity/suites/basic/counter/counter_sol.bin 2> /dev/null
|
||||
|
||||
ACCT=$(curl --fail --silent -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":1}' -H "Content-Type: application/json" http://localhost:8545 | grep -o '\0x[^"]*' 2>&1)
|
||||
ACCT=$(curl --fail --silent -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":1}' -H "Content-Type: application/json" http://localhost:8545 | grep -o '\0x[^"]*' | head -1 2>&1)
|
||||
|
||||
echo $ACCT
|
||||
|
||||
@ -66,4 +66,4 @@ PRIVKEY="$("$PWD"/build/ethermintcli keys unsafe-export-eth-key $KEY)"
|
||||
echo $PRIVKEY
|
||||
|
||||
## need to get the private key from the account in order to check this functionality.
|
||||
cd tests-solidity/suites/basic/ && go get && go run main.go $ACCT
|
||||
cd tests-solidity/suites/basic/ && go get && sleep 5 && go run main.go $ACCT
|
||||
|
@ -121,7 +121,7 @@ start_func() {
|
||||
|
||||
start_cli_func() {
|
||||
echo "starting ethermint node $i in background ..."
|
||||
"$PWD"/build/ethermintcli rest-server --unlock-key $KEY"$i" --chain-id $CHAINID --trace \
|
||||
"$PWD"/build/ethermintcli rest-server --unlock-key $KEY"$i" --chain-id $CHAINID --trace --rpc-api="web3,eth,net,personal" \
|
||||
--laddr "tcp://localhost:$RPC_PORT$i" --node tcp://$IP_ADDR:$NODE_RPC_PORT"$i" \
|
||||
--home "$DATA_CLI_DIR$i" --read-timeout 30 --write-timeout 30 \
|
||||
>"$DATA_CLI_DIR"/cli"$i".log 2>&1 & disown
|
||||
|
@ -24,7 +24,7 @@ fi
|
||||
chmod +x ./init-test-node.sh
|
||||
./init-test-node.sh > ethermintd.log &
|
||||
sleep 5
|
||||
ethermintcli rest-server --laddr "tcp://localhost:8545" --unlock-key localkey,user1,user2 --chain-id $CHAINID --trace --wsport 8546 > ethermintcli.log &
|
||||
ethermintcli rest-server --laddr "tcp://localhost:8545" --unlock-key localkey,user1,user2 --chain-id $CHAINID --trace --wsport 8546 --rpc-api="web3,eth,net,personal" > ethermintcli.log &
|
||||
|
||||
cd suites/initializable
|
||||
yarn test-ethermint
|
||||
@ -45,7 +45,7 @@ exit $ok
|
||||
|
||||
./../../init-test-node.sh > ethermintd.log &
|
||||
sleep 5
|
||||
ethermintcli rest-server --laddr "tcp://localhost:8545" --unlock-key localkey,user1,user2 --chain-id $CHAINID --trace --wsport 8546 > ethermintcli.log &
|
||||
ethermintcli rest-server --laddr "tcp://localhost:8545" --unlock-key localkey,user1,user2 --chain-id $CHAINID --trace --wsport 8546 --rpc-api="web3,eth,net,personal" > ethermintcli.log &
|
||||
|
||||
cd ../initializable-buidler
|
||||
yarn test-ethermint
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/bin/sh
|
||||
ethermintd --home /ethermint/node$ID/ethermintd/ start > ethermintd.log &
|
||||
sleep 5
|
||||
ethermintcli rest-server --laddr "tcp://localhost:8545" --chain-id "ethermint-7305661614933169792" --trace > ethermintcli.log &
|
||||
ethermintcli rest-server --laddr "tcp://localhost:8545" --chain-id "ethermint-7305661614933169792" --trace --rpc-api="web3,eth,net,personal" > ethermintcli.log &
|
||||
tail -f /dev/null
|
Loading…
Reference in New Issue
Block a user