¿Qué es el Registrador Global?

Un tipo en reddit encontró una dirección con 235 ETH en su billetera. Estaba confundido acerca de cómo logró obtener tanto ETH. Los comentaristas le dijeron que es el objeto registrador global .

Aquí hay un fragmento interesante de su salida de línea de comando :

namereg: {
    address: "0xc6d9d2cd449a754c494264e1809c50e34d64562b",
    AuctionEnded: function(),
    Changed: function(),
    NewBid: function(),
    PrimaryChanged: function(),
    Registrar: function(),
    addr: function(),
    allEvents: function(),
    content: function(),
    disown: function(),
    name: function(),
    owner: function(),
    reserve: function(),
    setAddress: function(),
    setContent: function(),
    setSubRegistrar: function(),
    subRegistrar: function(),
    transfer: function()
}

¿Qué es namereg? ¿Qué es el registrador mundial ?

Respuestas (3)

El registrador global parece estar ya codificado en geth.

beefee@Kumquat:~$ geth console
I0330 00:29:31.337735    8794 database.go:71] Alloted 16MB cache to /home/beefee/.ethereum/chaindata
...
at block: 1235423 (Tue, 29 Mar 2016 10:10:53 AEDT)
modules: admin:1.0 db:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 shh:1.0 txpool:1.0 web3:1.0
> registrar
{
  address: "0x33990122638b9132ca29c723bdf037f1a891a70c",
  Changed: function(),
  PrimaryChanged: function(),
  Registrar: function(),
  addr: function(),
  allEvents: function(),
  content: function(),
  disown: function(),
  name: function(),
  owner: function(),
  register: function(),
  reserve: function(),
  setAddress: function(),
  setContent: function(),
  setSubRegistrar: function(),
  subRegistrar: function(),
  transfer: function()
}
> registrar.addr("BeefPool.net")
"0xbeef281b81d38096cd8b1d8f69f77be100000000"
> registrar.owner("BeefPool.net")
"0xbeef281b81d383336aca8b2b067a526227638087"

La respuesta 5chdn parece dar un registrador global no válido.

// Using the default hard-coded registrar
> registrar.addr("ethpool")
"0x4bb96091ee9d802ed039c4d1a5f6216f90f81b01"
// Invalid Global Registrar from 5chdn
> registrar = GlobalRegistrar.at('0xc6d9d2cd449a754c494264e1809c50e34d64562b');
{
  address: "0xc6d9d2cd449a754c494264e1809c50e34d64562b",
  Changed: function(),
  PrimaryChanged: function(),
  Registrar: function(),
  addr: function(),
  allEvents: function(),
  content: function(),
  disown: function(),
  name: function(),
  owner: function(),
  register: function(),
  reserve: function(),
  setAddress: function(),
  setContent: function(),
  setSubRegistrar: function(),
  subRegistrar: function(),
  transfer: function()
}
> registrar.addr("ethpool")
"0x"

Además, de https://github.com/ethereum/go-ethereum/blob/master/common/registrar/registrar.go#L56-L63 :

  GlobalRegistrarAddr = "0x33990122638b9132ca29c723bdf037f1a891a70c" // frontier
  HashRegAddr         = "0x23bf622b5a65f6060d855fca401133ded3520620" // frontier
  UrlHintAddr         = "0x73ed5ef6c010727dfd2671dbb70faac19ec18626" // frontier

Aquí están:

https://live.ether.camp/account/33990122638b9132ca29c723bdf037f1a891a70c https://live.ether.camp/account/23bf622b5a65f6060d855fca401133ded3520620 https://live.ether.camp/account/73ed5ef6c010727dfd2671dbb70faac19ec18626

Obtengo geth-1.4.6un ReferenceError para ambos namereg, así como para registrar. ¿Cambió esto con el último par de versiones geth o qué?

Un contrato namereg permite asociar nombres comprensibles para humanos con datos incomprensibles para humanos. Uno de los casos de uso es crear una libreta de direcciones global para las direcciones de Ethereum. Usando un contrato namereg, uno puede enviar ether a "5chdn" en lugar de "0x<algún valor hexadecimal>". También se pueden registrar cosas como hashes de IPFS, lo que permite usarlo como un DNS descentralizado para una Web descentralizada.

El registrador global es un contrato de registro de nombre compartido que (según tengo entendido) se integrará con clientes fáciles de usar como Mist de forma predeterminada.

Actualización: Tenga en cuenta que este es el registrador de testnet.

Genial, además de la otra respuesta, ya está implementada. Para probar eso , escriba en su consola geth:

registrar = GlobalRegistrar.at('0xc6d9d2cd449a754c494264e1809c50e34d64562b');

Para configurar su propio nombre y darle una prueba:

registrar.reserve.sendTransaction('5chdn', {from: eth.accounts[0]});
registrar.setAddress.sendTransaction('5chdn', eth.accounts[0], true, {from: eth.accounts[0]});

Para probar, vea si puede resolver "5chdn" en su dirección de ethereum:

registrar.addr('5chdn');

Ahora, cada vez que alguien quiera enviarte algo de ether, solo necesitas hacer esto:

eth.sendTransaction({from: eth.accounts[0], to: registrar.addr('5chdn'), value: web3.toWei(1, 'ether'), gas: 21000});

Deberá ejecutar la GlobalRegistrar.at()línea cada vez que inicie geth hasta que se codifique de forma rígida.

También puede reemplazar el segundo parámetro de .setAddress()arriba con la dirección de un contrato para "llamarlo por su nombre".

registrador.addr('5chdn'); me devuelve "0x", ¿es correcto?
Parece que este es el registrador de testnet, oops :-)