mgo 0.1.0 copy "mgo: ^0.1.0" to clipboard
mgo: ^0.1.0 copied to clipboard

A cross-platform SDK for Mango blockchain, supporting Mobile, Web and Desktop.

Mgo Dart SDK #

Pub

The official Dart SDK for Mango Network, maintained by MangoNet Labs.

Note: This SDK is under active development and may introduce breaking changes.

Installation #

dependencies:
  mgo: ^0.1.0

Demo #

https://mgo-dart.pages.dev/

Usage #

Connecting to Mgo Network #

/// connect to devnet
final devnetClient = MgoClient(MgoUrls.devnet);

/// connect to testnet
final testnetClient = MgoClient(MgoUrls.testnet);

/// connect to mainnet
final mainnetClient = MgoClient(MgoUrls.mainnet);

Getting coins from the faucet #

Faucet V0

final faucet = FaucetClient(MgoUrls.faucetDev);
await faucet.requestMgoFromFaucetV0('0xa2d8bb82df40770ac5bc8628d8070b041a13386fef17db27b32f3b0f316ae5a2');

Faucet V1

final faucet = FaucetClient(MgoUrls.faucetDev);
await faucet.requestMgoFromFaucetV1('0xa2d8bb82df40770ac5bc8628d8070b041a13386fef17db27b32f3b0f316ae5a2');

Mgo Account #

Create account with private key

/// Ed25519 account
final ed25519 = MgoAccount.ed25519Account();
final ed25519Import = MgoAccount.fromPrivateKey(ed25519.privateKey());

/// Secp256k1 account
final secp256k1 = MgoAccount.secp256k1Account();
final sepc256k1Import = MgoAccount.fromPrivateKey(secp256k1.privateKey());

/// Secp256r1 account
final secp256r1 = MgoAccount.secp256r1Account();
final sepc256r1Import = MgoAccount.fromPrivateKey(secp256r1.privateKey());

Create account with mnemonic

/// create mnemonics
final mnemonics = MgoAccount.generateMnemonic();

/// Ed25519 account
final ed25519 = MgoAccount.fromMnemonics(mnemonics, SignatureScheme.Ed25519);

/// Secp256k1 account
final secp256k1 = MgoAccount.fromMnemonics(mnemonics, SignatureScheme.Secp256k1);

/// Secp256r1 account
final secp256r1 = MgoAccount.fromMnemonics(mnemonics, SignatureScheme.Secp256r1);

Writing APIs #

Transfer Object

final account = MgoAccount.fromMnemonics(mnemonics, SignatureScheme.Ed25519);
final client = MgoClient(MgoUrls.devnet);

final tx = Transaction();
tx.transferObjects(
    [tx.objectId('0x2619f581cb1864d07c89453a69611202669fdc4784fb59b9cb4278ec60756011')],
    account.getAddress()
);

final result = await client.signAndExecuteTransactionBlock(account, tx);
print(result.digest);

Split and Transfer Coins

final account = MgoAccount.fromMnemonics(mnemonics, SignatureScheme.Ed25519);
final client = MgoClient(MgoUrls.devnet);

final tx = Transaction();
final coin = tx.splitCoins(tx.gas, [1000]);
tx.transferObjects(
    [coin],
    account.getAddress()
);

final result = await client.signAndExecuteTransactionBlock(account, tx);
print(result.digest);

Merge Coins

final account = MgoAccount.fromMnemonics(mnemonics, SignatureScheme.Ed25519);
final client = MgoClient(MgoUrls.devnet);

final tx = Transaction();
tx.mergeCoins(tx.objectId('0x922ec73939b3288f6da39ebefb0cb88c6c54817441254d448bd2491ac4dd0cbd'),
    [tx.objectId('0x8dafc96dec7f8d635e052a6da9a4153e37bc4d59ed44c45006e4e9d17d07f80d')]
);

final result = await client.signAndExecuteTransactionBlock(account, tx);
print(result.digest);

Move Call

final account = MgoAccount.fromMnemonics(mnemonics, SignatureScheme.Ed25519);
final client = MgoClient(MgoUrls.devnet);

const packageObjectId = '0x...';
final tx = Transaction();
tx.moveCall('$packageObjectId::nft::mint', arguments: [tx.pureString('Example NFT')]);

final result = await client.signAndExecuteTransactionBlock(account, tx);
print(result.digest);

Publish Modules

final account = MgoAccount.fromMnemonics(mnemonics, SignatureScheme.Ed25519);
final client = MgoClient(MgoUrls.devnet);

const moduels = <String>[];
const dependencies = <String>[];
final tx = Transaction();
final upgradeCap = tx.publish(moduels, dependencies);
tx.transferObjects([upgradeCap], account.getAddress());

final result = await client.signAndExecuteTransactionBlock(account, tx);
print(result.digest);

Reading APIs #

Get Owned Objects

final client = MgoClient(MgoUrls.devnet);

final objects = await client.getOwnedObjects('0xa2d8bb82df40770ac5bc8628d8070b041a13386fef17db27b32f3b0f316ae5a2');

Get Objects

final client = MgoClient(MgoUrls.devnet);

final obj = await client.getObject('0x0d49dbda185cd0941b71315edb594276731f21b2232d8713f319b02c462a2da7',
    options: MgoObjectDataOptions(showContent: true)
);

final objs = await client.multiGetObjects([
    '0x0d49dbda185cd0941b71315edb594276731f21b2232d8713f319b02c462a2da7',
    '0x922ec73939b3288f6da39ebefb0cb88c6c54817441254d448bd2491ac4dd0cbd'
], options: MgoObjectDataOptions(showType: true));

Get Transaction

final client = MgoClient(MgoUrls.devnet);

final txn = await client.getTransactionBlock('6oH779AUs2WpwW77xCVGbYqK1FYVamRqHjV6A5wCV8Qj',
    options: MgoTransactionBlockResponseOptions(showEffects: true)
);

final txns = await client.multiGetTransactionBlocks([
    '9znMGToLRRa8yZvjCUfj1FJmq4gpb8QwpibFAUffuto1',
    '4CEFMajEtM62MthwY1xR3Bcddoh2h5wc7jeKEy7WWsbv'
], options: MgoTransactionBlockResponseOptions(showInput: true, showEffects: true));

Get Checkpoints

final client = MgoClient(MgoUrls.devnet);

final checkpoint = await client.getCheckpoint('338000');

final checkpoints = await client.getCheckpoints(descendingOrder: true);

Get Coins

final client = MgoClient(MgoUrls.devnet);

final coins = await client.getCoins(
    '0xa2d8bb82df40770ac5bc8628d8070b041a13386fef17db27b32f3b0f316ae5a2',
    coinType: '0x2::mgo::MGO');

final allCoins = await client.getAllCoins('0xa2d8bb82df40770ac5bc8628d8070b041a13386fef17db27b32f3b0f316ae5a2');

final mgoBalance = await client.getBalance('0xa2d8bb82df40770ac5bc8628d8070b041a13386fef17db27b32f3b0f316ae5a2');

Events APIs #

Querying events

final client = MgoClient(MgoUrls.devnet);

final events = await client.queryEvents(
    {"Sender": "0xa2d8bb82df40770ac5bc8628d8070b041a13386fef17db27b32f3b0f316ae5a2"},
    limit: 2
);

/// Or with EventFilter

final events = await client.queryEventsByFilter(
    EventFilter(sender: "0xa2d8bb82df40770ac5bc8628d8070b041a13386fef17db27b32f3b0f316ae5a2"),
    limit: 2
);

WebsocketClient subscribeEvent

final client = WebsocketClient(MgoUrls.webSocketDevnet);

final subscription = client.subscribeEvent({"Sender": "0xa2d8bb82df40770ac5bc8628d8070b041a13386fef17db27b32f3b0f316ae5a2"})
.listen((event) {
    debugPrint(event);
}, onError: (e) {
    debugPrint(e.toString());
});

License #

Licensed under the Apache License 2.0.

0
likes
90
points
11
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A cross-platform SDK for Mango blockchain, supporting Mobile, Web and Desktop.

Repository (GitHub)
View/report issues

Topics

#mgo #mango-network #blockchain #web3 #sdk

License

Apache-2.0 (license)

Dependencies

bcs, bip32, bip39, dio, ed25519_edwards, freezed_annotation, hex, json_annotation, meta, pointycastle, web_socket_channel

More

Packages that depend on mgo