Flutter插件brambldart的使用_brambldart是一个支持 Topl 区块链的 Dart 库

Flutter插件brambldart的使用_brambldart是一个支持 Topl 区块链的 Dart 库

Flutter插件brambldart简介

brambldart 是一个支持 Topl 区块链的 Dart 库。它通过 JSON-RPC 连接到 Topl 节点来发送交易、与地址交互等。

Flutter插件brambldart特性

  • 通过 RPC API 连接到 Topl 节点,并调用常见方法。
  • 发送已签名的 Topl 交易。
  • 生成私钥,设置新的 Topl 地址。

Flutter插件brambldart使用

凭证和钱包

为了在 Topl 网络上发送交易,需要一些凭证。库支持原始私钥和版本 1 加密的密钥文件。此外,它还支持通过 HD 钱包生成密钥。

创建凭证

import 'package:brambldart/brambldart.dart';

// 从私钥创建凭证
Credentials credentials = ToplSigningKey.fromString("base58EncodedPrivateKeyHere");

// 或者随机生成新密钥
var networkId = 0x40;
var propositionType = PropositionType.ed25519();
Credentials random = ToplSigningKey.createRandom(networkId, propositionType);

// 在任何一种情况下,库都可以从私钥派生公钥和地址
var address = await credentials.extractAddress();
print(address.toBase58());

使用加密密钥文件

import 'dart:io';
import 'package:brambldart/brambldart.dart';

String content = new File("wallet.json").readAsStringSync();
KeyStore keystore = KeyStore.fromV1Json(content, "testPassword");

Credentials unlocked = ToplSigningKey.fromString(keystore.privateKey);
// 现在可以使用这些凭证签署交易

创建密钥存储文件

Keystore keystore = KeyStore.createNew(credentials, 'password', random);
print(keystore.toJson());

连接到RPC服务器

库本身不会直接将签名交易发送给锻造者。相反,它依赖于 RPC 客户端来完成这一操作。你可以使用公共 RPC API(例如 https://beta.topl.services),或者如果只是为了测试,可以使用带有 https://docs.topl.co/v1.4.0/docs/installing-bifrost 的私有测试网。

import 'package:dio/dio.dart'; // 你也可以导入浏览器版本
import 'package:brambldart/brambldart.dart';

var networkId = 0x40;
var propositionType = PropositionType.ed25519();
var privateKey = 'base58EncodedPrivateKey';

var apiUrl = "http://localhost:9085"; // 替换为你的API
var httpClient = Dio(BaseOptions(
    baseUrl: basePathOverride ?? basePath,
    contentType: 'application/json',
    connectTimeout: 5000,
    receiveTimeout: 3000));
var bramblClient = BramblClient(httpClient: httpClient, basePathOverride: apiUrl);
var credentials = bramblClient.credentialsFromPrivateKey(privateKey, networkId, propositionType);

// 现在可以调用 RPC 方法。这将查询你拥有的 Topl 代币数量
Balance balance = bramblClient.getBalance(credentials.address);
print(balance.toString());

发送交易

当然,该库支持创建、签署并发送 Topl 交易:

import 'package:brambldart/brambldart.dart';

/// [...], 你需要指定 URL 和客户端,参见上面的示例
var bramblClient = BramblClient(basePathOverride: apiUrl, httpClient: httpClient);

var credentials = bramblClient.credentialsFromPrivateKey("0x...");

const value = 1;

final assetCode =
    AssetCode.initialize(1, senderAddress, 'testy', 'valhalla');

final securityRoot = SecurityRoot.fromBase58(
    Base58Data.validated('11111111111111111111111111111111'));

final assetValue = AssetValue(
    value.toString(), assetCode, securityRoot, 'metadata', 'Asset');

final recipient = AssetRecipient(senderAddress, assetValue);

final data = Latin1Data.validated('data');

final assetTransaction = AssetTransaction(
    recipients: [recipient],
    sender: [senderAddress],
    changeAddress: senderAddress,
    consolidationAddress: senderAddress,
    propositionType: PropositionType.ed25519().propositionName,
    minting: true,
    assetCode: assetCode,
    data: data);

final rawTransaction =
      await client.sendRawAssetTransfer(assetTransaction: assetTransaction);

expect(rawTransaction['rawTx'], isA<TransactionReceipt>());

print(rawTransaction);

final txId = await client.sendTransaction(
    [first],
    rawTransaction['rawTx'] as TransactionReceipt,
    rawTransaction['messageToSign'] as Uint8List);

更多关于Flutter插件brambldart的使用_brambldart是一个支持 Topl 区块链的 Dart 库的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter插件brambldart的使用_brambldart是一个支持 Topl 区块链的 Dart 库的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter开发中,探索和使用第三方插件是扩展应用功能的常见做法。针对帖子中提到的“brambldart”这个未知的Flutter插件(由于“brambldart”不是一个广为人知的插件名,我将假设它是一个假想的或特定项目中的插件名,以下代码示例将基于一般插件使用的原则进行说明),我们可以讨论如何在Flutter项目中集成和使用一个假设的第三方插件。

1. 添加依赖

首先,我们需要在pubspec.yaml文件中添加对该插件的依赖。由于“brambldart”是假设的插件名,这里我们用example_plugin代替:

dependencies:
  flutter:
    sdk: flutter
  example_plugin: ^x.y.z  # 假设的版本号

注意:实际使用时,你需要替换example_plugin为真实的插件名和版本号。

2. 导入插件

在你的Dart文件中导入该插件:

import 'package:example_plugin/example_plugin.dart';

3. 使用插件功能

假设example_plugin提供了一个名为performAction的方法,该方法接受一些参数并返回一个Future对象。下面是如何在Flutter应用中使用这个方法的示例:

import 'package:flutter/material.dart';
import 'package:example_plugin/example_plugin.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Example Plugin Usage'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              try {
                // 假设performAction方法需要一些参数,这里用示例参数代替
                var result = await ExamplePlugin().performAction('someParameter');
                ScaffoldMessenger.of(context).showSnackBar(
                  SnackBar(content: Text('Result: $result')),
                );
              } catch (e) {
                ScaffoldMessenger.of(context).showSnackBar(
                  SnackBar(content: Text('Error: ${e.message}')),
                );
              }
            },
            child: Text('Perform Action'),
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个按钮。当用户点击按钮时,应用会调用ExamplePluginperformAction方法,并显示结果或错误信息作为SnackBar。

4. 处理平台特定代码(如果需要)

如果brambldart(或example_plugin)插件包含平台特定的代码(如iOS和Android),你可能需要在相应的原生代码文件中进行一些配置。这通常涉及编辑ios/Runner/android/app/目录下的文件。

注意事项

  • 插件文档:始终参考插件的官方文档,以获取关于如何正确集成和使用该插件的最新和详细信息。
  • 权限:如果插件需要特定的权限(如访问相机、位置信息等),请确保在AndroidManifest.xml(Android)和Info.plist(iOS)中正确声明这些权限。
  • 错误处理:在实际应用中,始终包含适当的错误处理逻辑,以处理插件调用可能引发的异常。

由于“brambldart”是一个未知的插件名,上述示例基于假设和通用原则。如果你有一个具体的插件名和功能描述,可以提供更具体的代码示例和集成指南。

回到顶部