¿Dirección de contrato de vanidad con implementación de Solidity?

Me gustaría que mis contratos tuvieran direcciones personalizadas, más específicamente que comenzaran con la palabra "face" como "0xface...".

Tengo el siguiente código para implementar un Token, y mi problema es implementarlo en una dirección Vanity, con un contrato de dirección Vanity también, en lugar de uno aleatorio.

Aquí es donde creo que se haría:

contract SimpleToken is StandardToken {

  string public constant name = "FACETOKE";
  string public constant symbol = "FACE";
  uint8 public constant decimals = 18;

  uint256 public constant INITIAL_SUPPLY = 1000000*10**18; // 1 million Face tokens

  function SimpleToken() {
    totalSupply = INITIAL_SUPPLY;
    balances[msg.sender] = INITIAL_SUPPLY;
  }

}

Y aquí está mi código actual completo: https://gist.githubusercontent.com/anonymous/caeff72acbaa144eff23bfbc84912b33/raw/f1fbc2778d9595ebaac6bf5715ef1a6024dae33d/FaceToken.sol

Respuestas (1)

¡Interesante pero difícil! En primer lugar, veamos [cómo se crean las direcciones de contrato inteligente de Ethereum] ( ¿Cómo se calcula la dirección de un contrato de Ethereum? ): solo dependen de la dirección del remitente y es un momento. Así que básicamente tienes que probar y error (¡mucho!). Entonces, ¿cuál de los dos te vas a probar? Dado que solo puede aumentar el nonce enviando un tx que se extrae, lo que a su vez le cuesta dinero, prefiere probar y fallar en la dirección. Puede crear una tonelada de dirección, por ejemplo, como esta(Advertencia: esto es bastante lento, intente paralelizar masivamente) y calcule la dirección del contrato resultante con nonce 0, 1, ..., 10 para mantenerlo razonable. Eventualmente encontrarás uno. Desacoplaría los contratos y no haría que uno implementara otro, ya que eso lo hace mucho más difícil. Intente encontrar una dirección que funcione primero.