网络编程 
首页 > 网络编程 > 浏览文章

使用React Native创建以太坊钱包实现转账等功能

(编辑:jimmy 日期: 2024/11/24 浏览:3 次 )

之前想用React Native开发一版以太坊钱包app,但在生成账户那块遇见了问题,没有crypto等nodejs包,react native是运行在JavaScriptCore环境里面,是没有buffer, crypto 跟 stream这些库的,所以为了解决,就跟同事开发了基于golang的web3go,然后使用gomoble工具编译成ios需要的framework以及android需要的jar aar,完美解决问题

演示

 使用React Native创建以太坊钱包实现转账等功能

dapp-demo-1.jpg

使用React Native创建以太坊钱包实现转账等功能

dapp-demo-2.jpg

安装web3go

git clone https://github.com/bcl-chain/web3.go.git

使用gomobile编译成framework,jar,aar

// generate frameworkgomobile bind -target=ios 
./github.com/bcl-chain/web3
.go/mobile// generate arr jargomobile bind -target=android
 ./github.com/bcl-chain/web3.go/mobile

把生成的包link到原生app里面

使用React Native创建以太坊钱包实现转账等功能

link-web3go.jpg

使用React Native创建以太坊钱包实现转账等功能

andoir-getbalence.jpg

下载ETH本地测试工具ganache-cli

使用React Native创建以太坊钱包实现转账等功能

gan-cli.jpg

安装依赖

yarn
react-native run-android
react-native run-ios

getBalance代码分析

// IOS
RCT_EXPORT_METHOD(getBalance:
         (NSString*) address:
         (RCTPromiseResolveBlock)resolve
         rejecter:(RCTPromiseRejectBlock)reject){
 // ip地址
 Web3goEthereumClient* client = Web3goNewEthereumClient(nodeIP, nil);
 Web3goContext* ctx = Web3goNewContext();
 // 账户地址
 Web3goAddress* address1 = Web3goNewAddressFromHex(address, nil);
 @try {
  Web3goBigInt* a = [client getBalanceAt:ctx account:address1 number:-1 error:nil];
  NSString* ammount = [a getString:10];
  NSLog(@"%@", ammount);
  resolve(ammount);
 } @catch (NSError *exception) {
  NSLog(@"NSError: %@", exception);
  reject(@"NSError: %@", @"There were no events", exception);
 } @finally {
  NSLog(@"finally");
 }
 
}

// android
@ReactMethod
public void getBalance(String address, Promise promise) {
  try {
   web3go.EthereumClient client = Web3go.newEthereumClient(nodeIP);
   web3go.Context ctx = Web3go.newContext();
   web3go.Address address1 = Web3go.newAddressFromHex(address);
   web3go.BigInt a = client.getBalanceAt(ctx, address1, -1);
   String ammout = a.getString(10);
   promise.resolve(ammout);
  } catch (Exception e) {
   promise.reject(e.getMessage());
  }
}

// react-native
async getBalance() {
  try {
   var ammount = await NativeModules.Web3go.getBalance(this.state.defGaAddress);
   this.setState({
    gaAmmount: ammount
   })
  } catch (e) {
   console.error(e);
  }
}

如果有用,给个start

web3go

React-Native-Dapp

总结

以上所述是小编给大家介绍的使用React Native创建以太坊钱包实现转账等功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

上一篇:Hadoop-3.1.2完全分布式环境搭建过程图文详解(Windows 10)
下一篇:微信支付--签名错误问题的解决方法
一句话新闻
Windows上运行安卓你用过了吗
在去年的5月23日,借助Intel Bridge Technology以及Intel Celadon两项技术的驱动,Intel为PC用户带来了Android On Windows(AOW)平台,并携手国内软件公司腾讯共同推出了腾讯应用宝电脑版,将Windows与安卓两大生态进行了融合,PC的使用体验随即被带入到了一个全新的阶段。
友情链接:杰晶网络 DDR爱好者之家 南强小屋 黑松山资源网 白云城资源网 网站地图 SiteMap