Terra 的 Dart SDK

diagram

GitHub npm (scoped)

探索文档 »

示例 · API 参考 · Pubspec 包 · GitHub

Terra-dart 是一个 Dart SDK,用于从 Web、移动设备或 Flutter 环境中编写与 Terra 区块链交互的应用程序,并提供对核心数据结构、序列化、密钥管理和 API 请求生成的简单抽象。

特点

  • 用 Dart 编写,提供类型定义
  • 密钥管理 解决方案提供多方面支持
  • 适用于 Flutter、浏览器和移动端
  • 通过 LCDClient 公开 Terra API
  • 将响应解析为原生 Dart 类型

我们强烈建议在支持类型声明的代码编辑器中使用 terra-dart,以便您可以利用包中包含的有用类型提示。

安装

NPM 获取最新版本

npm install @terra-money/terra-dart

用法

terra-dart 可在 Node.js 和浏览器中使用。请参阅 文档 以获取有关如何开始的说明。

获取区块链数据

❗ terra-dart 可以连接 terra-classic 和 terra 网络。如果您想与 classic 链通信,则必须将 isClassic 设置为 true

import { LCDClient, Coin } from '@terra-money/terra-dart';

// connect to pisco testnet
const terra = new LCDClient({
  URL: 'https://pisco-lcd.terra.dev',
  chainID: 'pisco-1',
  isClassic: false  // if it is unset, LCDClient assumes the flag is false.
});

// connect to columbus-5 terra classic network
const terra = new LCDClient({
  URL: 'https://columbus-lcd.terra.dev',
  chainID: 'columbus-5',
  isClassic: true  // *set to true to connect terra-classic chain*
});

// To use LocalTerra
// const terra = new LCDClient({
//   URL: 'https://:1317',
//   chainID: 'localterra'
// });

// get the current balance of `terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v`
const balance = terra.bank.balance('terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v');
console.log(balance);

广播交易

首先,获取一些 testnet 代币给 terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v,或使用 LocalTerra

import { LCDClient, MsgSend, MnemonicKey } from '@terra-money/terra-dart';

// create a key out of a mnemonic
const mk = new MnemonicKey({
  mnemonic:
    'notice oak worry limit wrap speak medal online prefer cluster roof addict wrist behave treat actual wasp year salad speed social layer crew genius',
});

// connect to bombay testnet
const terra = new LCDClient({
  URL: 'https://pisco-lcd.terra.dev',
  chainID: 'pisco-1',
});

// To use LocalTerra
// const terra = new LCDClient({
//   URL: 'https://:1317',
//   chainID: 'localterra'
// });

// a wallet can be created out of any key
// wallets abstract transaction building
const wallet = terra.wallet(mk);

// create a simple message that moves coin balances
const send = new MsgSend(
  'terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v',
  'terra17lmam6zguazs5q5u6z5mmx76uj63gldnse2pdp',
  { uluna: 1200000}
);

wallet
  .createAndSignTx({
    msgs: [send],
    memo: 'test from terra-dart!',
  })
  .then(tx => terra.tx.broadcast(tx))
  .then(result => {
    console.log(`TX hash: ${result.txhash}`);
  });

浏览器中的 terra-dart

如果您使用 <script> 标签加载 terra-dart,您可以从全局 Terra 对象访问 @terra-money/terra-dart 的所有对象。

在您的浏览器中包含以下内容

<script
  crossorigin
  src="https://unpkg.com/@terra-money/terra-dart/dist/bundle.js"
></script>

您可以在 这里 找到一个小的 JSFiddle 示例,该示例刷新当前 Oracle 投票。

React Native 中的 terra-dart

为了在 React Native 中使用 terra-dart,您需要将 node-libs-react-native 包和 react-native-get-random-values 包添加到您的 React Native 应用程序的 package.json 文件中。

yarn add node-libs-react-native react-native-get-random-values

您需要在应用程序的入口点(例如 index.tsx)中注册 Node.js 原生模块。

import 'node-libs-react-native/globals';
import 'react-native-get-random-values';

另外,在您的 metro.config.js 文件中添加解析器。

module.exports {
  // ...
  resolver: {
    // ...
    extraNodeModules: require('node-libs-react-native'),
  },
  // ...
}

许可证

本软件根据 MIT 许可证授权。有关完整的披露信息,请参阅 LICENSE

© 2020 Terraform Labs, PTE.


为金钱的创新提供动力。

GitHub

查看 Github