Futures
Accédez à des centaines de contrats perpétuels
TradFi
Or
Une plateforme pour les actifs mondiaux
Options
Hot
Tradez des options classiques de style européen
Compte unifié
Maximiser l'efficacité de votre capital
Trading démo
Introduction au trading futures
Préparez-vous à trader des contrats futurs
Événements futures
Participez aux événements et gagnez
Demo Trading
Utiliser des fonds virtuels pour faire l'expérience du trading sans risque
Lancer
CandyDrop
Collecte des candies pour obtenir des airdrops
Launchpool
Staking rapide, Gagnez de potentiels nouveaux jetons
HODLer Airdrop
Conservez des GT et recevez d'énormes airdrops gratuitement
Launchpad
Soyez les premiers à participer au prochain grand projet de jetons
Points Alpha
Tradez on-chain et gagnez des airdrops
Points Futures
Gagnez des points Futures et réclamez vos récompenses d’airdrop.
Investissement
Simple Earn
Gagner des intérêts avec des jetons inutilisés
Investissement automatique
Auto-invest régulier
Double investissement
Profitez de la volatilité du marché
Staking souple
Gagnez des récompenses grâce au staking flexible
Prêt Crypto
0 Fees
Mettre en gage un crypto pour en emprunter une autre
Centre de prêts
Centre de prêts intégré
Full Chain Game 101 : Contrats précompilés
**Qu’est-ce qu’un contrat précompilé ? **
Les contrats précompilés sont une méthode de compromis utilisée dans EVM pour fournir des fonctions de bibliothèque plus complexes (généralement utilisées pour des opérations complexes telles que le chiffrement et le hachage). Il peut également être compris comme un contrat spécial, et ces fonctions ne conviennent pas à l’écriture d’opcodes. Ils conviennent aux contrats simples mais fréquemment invoqués, ou aux contrats logiquement fixes mais gourmands en calculs. Les contrats précompilés sont implémentés à l’aide du code client du nœud et, comme ils ne nécessitent pas d’EVM, ils s’exécutent rapidement. C’est aussi moins coûteux pour le développeur que d’utiliser des fonctions qui s’exécutent directement dans l’EVM.
Comme on peut le voir dans le code suivant, la fonction run dans le contrat evm.go a deux branches : la première branche est d’instancier le paramètre d’index via l’index précompilé pour spécifier le contrat précompilé, et la seconde branche est de spécifier le précompilé contract s’il ne s’agit pas d’un contrat précompilé Cet evm sera appelé.
// run exécute le contrat donné et s’occupe de l’exécution des précompilations avec un retour à l’interpréteur de byte code. func run(evm *EVM, contract *Contract, input []byte, readOnly bool) ([]byte, error) { si contrat.CodeAddr != nil { precompiles := PrecompiledContractsHomestead si evm.ChainConfig().IsByzantium(evm.BlockNumber) { precompiles = PrecompiledContractsByzantium } if p := precompile[*contract.CodeAddr] ; p != nul { retourner RunPrecompiledContract(p, input, contract) } } for _, interpreter := range evm.interpreters { si interprète.CanRun(contract.Code) { if evm.interpreter != interprète { // Assurez-vous que le pointeur de l’interpréteur est en retrait // à sa valeur actuelle lors du retour. defer func(i Interpreter) { evm.interpreter = i }(evm.interpréteur) evm.interpreter = interprète } return interpreter.Run(contract, input, readOnly) } } renvoie nil, ErrNoCompatibleInterpreter }
Si elle est exprimée graphiquement, la logique spécifique est la suivante :
Où est donc le goulot d’étranglement du contrat précompilé ?
Ethereum a actuellement huit contrats précompilés :
Vous pouvez voir que les premier à quatrième contrats précompilés fournissent des fonctions de base de signature, de hachage et de chiffrement, et que les cinquième à huitième fournissent des opérations de courbe elliptique, qui sont liées à zk-snark.
La question est donc de savoir pourquoi la précompilation Ethereum ne prend en charge que huit contrats précompilés ? Les contrats précompilés ne réduisent-ils pas la consommation de gaz ? Et pourquoi ne pas implanter directement ECS (le cadre de tout le jeu de la chaîne) dans le contrat pré-compilé Ethereum ?
En fait, il y a trois raisons principales :
Tout d’abord, le code du contrat précompilé doit être intégré dans le code du nœud client, ce qui augmente la complexité du client. Deuxièmement, les nœuds de vérification peuvent filtrer le calcul des contrats précompilés pour des raisons de sécurité, de sorte que la plupart des demandes de contrats précompilés sont complétées par des nœuds complets.Actuellement, il n’y a que 4000 à 6000 nœuds complets Ethereum dans le monde, et il y a 500 000 vérifications nœuds, ce qui est en effet beaucoup plus centralisé que les contrats non précompilés.
Le support des contrats précompilés nécessite le processus EIP Par exemple : EIP-196 ajoute deux contrats précompilés, ECADD() et ECMUL(), sur la courbe alt_bn128. EIP-197 ajoute la fonction Pairing sur la courbe alt_bn128. Fondamentalement, il s’agit de rendre la confidentialité disponible sur Ethereum pour le support, et l’ensemble du processus EIP est long et élégant, et attendre que l’EIP passe n’est pas un problème réaliste.
Ce n’est pas grand chose à expliquer, c’est très intuitif.
Quel rôle le contrat précompilé joue-t-il dans l’ensemble du jeu de la chaîne ?
Les contrats précompilés ignorent l’EVM et s’exécutent directement via les nœuds, ce qui peut améliorer l’efficacité informatique, mais en même temps réduire le degré de décentralisation de l’ensemble de la chaîne. La précompilation de la logique de base des jeux fréquemment utilisés peut optimiser les performances de ces jeux. Différents types de jeux ont des logiques de touches différentes. Par conséquent, pour la chaîne dédiée d’un certain type de jeu, sa conception pré-compilée peut optimiser fortement les besoins de ce type de jeu. Au cours du processus d’itération du jeu, la combinaison de contrats précompilés la plus efficace sera progressivement optimisée.