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
¡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.
Richard Horrocks