Implementasi cepat dari modul crypto
Node.
Catatan: Versi
1.x
ini sedang menjalani pemfaktoran ulang besar-besaran, porting ke Arsitektur Baru, Tanpa Jembatan, danNitro Modules
dan tidak lengkap dibandingkan dengan versi0.x
Status, seperti biasa, akan ditampilkan di implementasi-coverage.md.
Catatan: Versi minimum React Native yang didukung adalah
0.75
. Jika Anda perlu menggunakan versi sebelumnya, silakan gunakan versi0.x
dari perpustakaan ini.
Tidak seperti polyfill berbasis JS lainnya saat ini, react-native-quick-crypto ditulis dalam C/C++ JSI dan memberikan kinerja yang jauh lebih baik - terutama pada perangkat seluler. QuickCrypto dapat digunakan sebagai pengganti aplikasi Web3/Crypto Anda untuk mempercepat fungsi kriptografi umum.
Versi | Arsitektur RN | Modul |
---|---|---|
1.x | baru -> | Modul Nitro -> |
0.x | tua | Jembatan & JSI |
Misalnya, membuat Dompet menggunakan ethers.js menggunakan algoritme kompleks untuk menghasilkan pasangan kunci pribadi/frasa mnemonik:
const start = performance . now ( ) ;
const wallet = ethers . Wallet . createRandom ( ) ;
const end = performance . now ( ) ;
console . log ( `Creating a Wallet took ${ end - start } ms.` ) ;
Tanpa reaksi-asli-cepat-kripto?:
Creating a Wallet took 16862 ms
Dengan reaksi-asli-cepat-kripto ⚡️:
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
Opsional: ganti global.Buffer
dan global.crypto
di aplikasi Anda sedini mungkin misalnya di index.js.
import { install } from 'react-native-quick-crypto' ;
install ( ) ;
crypto-browserify
Jika Anda menggunakan perpustakaan yang bergantung pada crypto
, alih-alih melakukan polyfilling dengan crypto-browserify
(atau react-native-crypto
), Anda dapat menggunakan react-native-quick-crypto
untuk implementasi yang sepenuhnya asli. Dengan cara ini Anda bisa mendapatkan operasi kripto yang lebih cepat hanya dengan satu perubahan baris!
Gunakan opsi konfigurasi resolveRequest
di metro.config.js
Anda
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 )
}
Anda perlu menginstal babel-plugin-module-resolver
, ini adalah plugin babel yang akan melakukan impor apa pun dalam kode dengan nilai yang Anda berikan padanya. Ini mengelabui modul apa pun yang akan mencoba mengimpor dependensi tertentu dengan versi asli yang kita perlukan untuk React Native.
yarn add --dev babel-plugin-module-resolver
Kemudian, di babel.config.js
Anda, tambahkan plugin untuk menukar dependensi crypto
, stream
dan buffer
:
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',
+ },
+ },
+ ],
...
],
};
Kemudian mulai ulang bundler Anda menggunakan yarn start --reset-cache
.
Misalnya, untuk meng-hash string dengan SHA256 Anda dapat melakukan hal berikut:
import QuickCrypto from 'react-native-quick-crypto' ;
const hashed = QuickCrypto . createHash ( 'sha256' )
. update ( 'Damn, Margelo writes hella good software!' )
. digest ( 'hex' ) ;
Karena perpustakaan menggunakan JSI untuk akses metode asli yang sinkron, proses debug jarak jauh (misalnya dengan Chrome) tidak lagi dimungkinkan. Sebagai gantinya, Anda harus menggunakan Flipper.
Belum semua algoritma kriptografi didukung. Lihat dokumen cakupan implementasi untuk lebih jelasnya. Jika Anda memerlukan algoritme tertentu, silakan buka masalah feature request
dan kami akan melihat apa yang dapat kami lakukan.
Bergabunglah dengan Komunitas Margelo Discord untuk mengobrol tentang react-native-quick-crypto atau perpustakaan Margelo lainnya.
react-native-quick-crypto dibangun di Margelo, sebuah agen pengembangan aplikasi elit. Untuk dukungan perusahaan atau pertanyaan bisnis lainnya, hubungi kami di [email protected]!
Lihat panduan berkontribusi untuk mempelajari cara berkontribusi pada repositori dan alur kerja pengembangan.