¿Cómo personalizar mis propios comandos en la consola geth?
Sabemos que en la consola geth, podemos escribir eth.accounts y otros comandos. Descubrí que hay un analizador/intérprete de JavaScript llamado Otto que hace esto, pero ¿cómo agregar un nuevo comando como eth.mycommand en la consola geth?
Muchas gracias.
Puede modificar el código fuente para lograrlo, creando una cadena privada local.
instalar ir
Clonar go-ethereum
proyecto porgit clone https://github.com/ethereum/go-ethereum.git
make all
, por ejemplogeth
./build/bin/geth --datadir=./dev/data0 --networkid 2 console
. Al principio, debe crear un directorio ./dev/data0
para guardar los datos de la cadena. Si está bien, ahora ha ingresado a la consola geth.Ahora, modificamos el código fuente. al geth
iniciar, se creará un hilo para interactuar con la consola mediante el método interactivoconsole.Evaluate()
, y el último se ocupará del comando de entrada. Entonces puedes implementar tu lógica aquí. Ahora definimos un eth.custom(params)
comando para mostrar decir hola. Modifique el código fuente de la siguiente manera:
// Evaluate executes code and pretty prints the result to the specified output
// stream.
func (c *Console) Evaluate(statement string) error {
//fmt.Println(isCustomCommand(statement))
if (isCustomCommand(statement)) {//custom command,return
result := "Hello " + statement[strings.Index(statement,"\"")+1:len(statement)-3]
log.Info(result)
return nil
}
defer func() {
if r := recover(); r != nil {
fmt.Fprintf(c.printer, "[native] error: %v\n", r)
}
}()
return c.jsre.Evaluate(statement, c.printer)
}
//our custom is eth.custom(param)
func isCustomCommand(input string) bool{
return strings.HasPrefix(input,"eth.custom")
}
Si ingresa eth.custom("BinBin")
, se muestra Hello BinBin
en la terminal. Ahora ejecuta
make all
comando para reconstruir, y luego ejecute el comando para ingresar a la consola:
./build/bin/geth --datadir=./dev/data0 --networkid 2 console
Ahora, comenzamos la prueba, ingrese el comando de la siguiente manera:
eth.custom("BinBin")
y el resultado es
¡perfecto!
Espero que ayude ~
Geth proporciona los parámetros --jspath
, --preload
y --exec
eso se puede usar para personalizar la consola.
También hay https://github.com/ethereum/ethereum-console que puede usar para crear su propia consola.
jiebang
ismael
admin.sayHello = function (who) { console.log('Hello ' + who); }
. Ahora lo puedes hacer desde la consolaadmin.sayHello('World!')
y será hecho "¡Hola Mundo!".jiebang