71 votes

Quelle est l'adresse(0) dans la Solidité

Quelqu'un peut-il m'expliquer ce qu' address(0) est dans la Solidité? J'ai trouvé ce qui suit dans les docs, mais il n'a pas vraiment de sens pour moi:

Si le compte est à zéro le compte avec l'adresse 0), la transaction crée un nouveau contrat. Comme déjà mentionné, l'adresse de ce contrat n'est pas l'adresse zéro, mais une adresse dérivé de l'expéditeur et le nombre de ses transactions envoyées (le "nonce"). La charge utile d'un tel contrat de création de transaction est EVM bytecode et exécuté. Le résultat de cette exécution est stockée de façon permanente le code de la contrat. Cela signifie que, dans le but de créer un contrat, vous n'envoyez pas le code réel du contrat, mais en fait le code qui renvoie le code.

http://solidity.readthedocs.io/en/develop/introduction-to-smart-contracts.html?highlight=address(0)#index-8

51voto

Adam Kipnis Points 6223

Au sein de l'Ethereum transaction, le zéro-le compte est juste un cas particulier utilisé pour indiquer qu'un nouveau contrat est en cours de déploiement. Il est littéralement "0 x 0' à la valeur de l' to champ dans le brut de la transaction.

Chaque Ethereum transaction, si c'est un transfert entre deux comptes extérieurs, une demande d'exécution d'un contrat de code, ou d'une demande de déployer un nouveau contrat, sont codés de la même manière. Un raw objet de la transaction devrait ressembler à quelque chose comme ceci:

transaction = {
  nonce: '0x0', 
  gasLimit: '0x6acfc0', // 7000000
  gasPrice: '0x4a817c800', // 20000000000
  to: '0x0',
  value: '0x0',
  data: '0xfffff'
};

Si to est réglé sur une valeur autre que "0 x 0", cette demande permettra le transfert de l'éther à l'adresse (si value est non nul), et de l'exécution de la fonction codée dans l' data champ. Rappelez-vous, l'adresse peut être soit un contrat ou d'un compte externe.

Lorsque l' to adresse est le zéro-adresse, un nouveau contrat sera créé par l'exécution du code en data (c'est ce que l'on entend par "code qui renvoie le code"). L'adresse du nouveau contrat est techniquement connu à l'avance car il est basé sur l'adresse de l'expéditeur et que c'est courant pour l'instant. Cette adresse devient l'adresse officielle du contrat après l'exploitation minière.

Pour une lecture assez bonne sur l'Ethereum transactions, consultez ce billet de blog.

Remarque: Il s'agit aussi de la Solidité code d'instruction address(0) qui est la valeur initiale d'une variable de type address. La documentation que vous avez posté, cependant, se réfère plus spécifiquement lorsque l' to compte adresse dans une transaction est réglée à "0 x 0".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X