Eine schnelle Implementierung des crypto
von Node.
Hinweis: Diese Version
1.x
wird einer umfassenden Überarbeitung unterzogen, die auf neue Architektur-, Bridgeless- undNitro Modules
portiert wird, und ist im Vergleich zur Version0.x
unvollständig. Der Status wird wie immer in der Datei „implementation-coverage.md“ dargestellt.
Hinweis: Die unterstützte Mindestversion von React Native ist
0.75
. Wenn Sie frühere Versionen verwenden müssen, verwenden Sie bitte0.x
-Versionen dieser Bibliothek.
Im Gegensatz zu allen anderen aktuellen JS-basierten Polyfills ist React-Native-Quick-Crypto in C/C++ JSI geschrieben und bietet eine viel höhere Leistung – insbesondere auf mobilen Geräten. QuickCrypto kann als direkter Ersatz für Ihre Web3-/Crypto-Apps verwendet werden, um gängige Kryptografiefunktionen zu beschleunigen.
Version | RN-Architektur | Module |
---|---|---|
1.x | neu -> | Nitro-Module -> |
0.x | alt | Brücke und JSI |
Beim Erstellen einer Wallet mit ethers.js werden beispielsweise komplexe Algorithmen verwendet, um ein Paar aus privatem Schlüssel und mnemonischer Phrase zu generieren:
const start = performance . now ( ) ;
const wallet = ethers . Wallet . createRandom ( ) ;
const end = performance . now ( ) ;
console . log ( `Creating a Wallet took ${ end - start } ms.` ) ;
Ohne React-Native-Quick-Crypto?:
Creating a Wallet took 16862 ms
Mit React-Native-Quick-Crypto ⚡️:
Creating a Wallet took 289 ms
bun add react-native-quick-crypto react-native-nitro-modules
cd ios && pod install
expo install react-native-quick-crypto
expo prebuild
Optional: Überschreiben Sie global.Buffer
und global.crypto
so früh wie möglich in Ihrer Anwendung, beispielsweise in index.js.
import { install } from 'react-native-quick-crypto' ;
install ( ) ;
crypto-browserify
Wenn Sie eine Bibliothek verwenden, die von crypto
abhängt, können Sie für eine vollständig native Implementierung react-native-quick-crypto
verwenden, anstatt sie mit crypto-browserify
(oder react-native-crypto
) zu füllen. Auf diese Weise können Sie Kryptooperationen mit nur einer einzigen Zeilenänderung viel schneller durchführen!
Verwenden Sie die Konfigurationsoption resolveRequest
in Ihrer metro.config.js
config . resolver . resolveRequest = ( context , moduleName , platform ) => {
if ( moduleName === 'crypto' ) {
// when importing crypto, resolve to react-native-quick-crypto
return context . resolveRequest (
context ,
'react-native-quick-crypto' ,
platform ,
)
}
// otherwise chain to the standard Metro resolver.
return context . resolveRequest ( context , moduleName , platform )
}
Sie müssen babel-plugin-module-resolver
installieren. Dabei handelt es sich um ein Babel-Plugin, das alle Importe im Code mit den Werten verknüpft, die Sie ihm übergeben. Es täuscht jedes Modul vor, das versucht, bestimmte Abhängigkeiten mit den nativen Versionen zu importieren, die wir für React Native benötigen.
yarn add --dev babel-plugin-module-resolver
Fügen Sie dann in Ihrer babel.config.js
das Plugin hinzu, um die Abhängigkeiten crypto
, stream
und buffer
auszutauschen:
module.exports = {
presets: ['module:metro-react-native-babel-preset'],
plugins: [
+ [
+ 'module-resolver',
+ {
+ alias: {
+ 'crypto': 'react-native-quick-crypto',
+ 'stream': 'readable-stream',
+ 'buffer': '@craftzdog/react-native-buffer',
+ },
+ },
+ ],
...
],
};
Starten Sie dann Ihren Bundler mit yarn start --reset-cache
neu.
Um beispielsweise eine Zeichenfolge mit SHA256 zu hashen, können Sie Folgendes tun:
import QuickCrypto from 'react-native-quick-crypto' ;
const hashed = QuickCrypto . createHash ( 'sha256' )
. update ( 'Damn, Margelo writes hella good software!' )
. digest ( 'hex' ) ;
Da die Bibliothek JSI für den synchronen Zugriff auf native Methoden verwendet, ist ein Remote-Debugging (z. B. mit Chrome) nicht mehr möglich. Stattdessen sollten Sie Flipper verwenden.
Noch werden nicht alle kryptografischen Algorithmen unterstützt. Weitere Einzelheiten finden Sie im Dokument zur Implementierungsabdeckung. Wenn Sie einen bestimmten Algorithmus benötigen, öffnen Sie bitte ein feature request
Problem und wir werden sehen, was wir tun können.
Treten Sie dem Margelo Community Discord bei, um über React-Native-Quick-Crypto oder andere Margelo-Bibliotheken zu chatten.
React-Native-Quick-Crypto wurde bei Margelo, einer Elite-App-Entwicklungsagentur, entwickelt. Für Unternehmensunterstützung oder andere geschäftliche Anfragen kontaktieren Sie uns unter [email protected]!
Lesen Sie den Beitragsleitfaden, um zu erfahren, wie Sie zum Repository und zum Entwicklungsworkflow beitragen können.