Nova
Nova can be used to generate eth wallets, sign transaction, and send them. It also implements part of the Ethereum JSON-RPC API specification.
Account
The library has built-in support for managing ethereum private keys, and signatures. It provides functionality for generating, signing, and sending transactions.
Use your own seed phrase or private key
Load an Account with a seed phrase
import "package:nova/nova.dart";
void main() {
// Your seed phrase
final seedPhrase = "seed sock milk update focus rotate barely fade car face mechanic mercy"
// The seed phrase private key
final privateKey = keys.derivePrivateKey(seedPhrase);
// Instantiate an Account object to sign and send transactions
final account = Account(privateKey, "ws://your-websocket.com");
}
Sign a Transaction
Generate a signed transaction
import 'dart:math';
import "package:nova/nova.dart";
void main() async {
final nova = Nova(
"0x4646464646464646464646464646464646464646464646464646464646464646",
"ws://xyz.com",
);
final signedTransaction = await nova.account.sign(
nonce: BigInt.from(9),
to: "0x3535353535353535353535353535353535353535",
gasLimit: BigInt.from(21000),
gasPrice: BigInt.from(20 * pow(10, 9)),
value: BigInt.from(pow(10, 18)),
chainId: 1,
);
}
Send a Transaction
Sign and send a transaction.
import 'dart:math';
import "package:nova/nova.dart";
void main() async {
final nova = Nova(
"0x4646464646464646464646464646464646464646464646464646464646464646",
"ws://xyz.com",
);
final signedTransaction = await nova.account.send(
nonce: BigInt.from(9),
to: "0x3535353535353535353535353535353535353535",
gasLimit: BigInt.from(21000),
gasPrice: BigInt.from(20 * pow(10, 9)),
value: BigInt.from(pow(10, 18)),
chainId: 1,
);
}
Ethereum Key Management
Generate a Account
Generate a seed phrase
import "package:nova/nova.dart";
void main() {
final seedPhrase = keys.generateMnemonic();
print(seedPhrase);
// imitate garbage talent chronic wonder tornado pluck
// pigeon gravity train jar laptop hurry poverty uncover
// intact oil expire peanut churn dutch cute burden pencil
}
Communicate with an Ethereum Node with Json RPC
The library facilitates communication with an Ethereum node, such as Geth or Parity, using the JSON-RPC protocol. Currently only part of the specification is implemented.
Function | |
---|---|
eth_protocolVersion | ✅ |
eth_syncing | |
eth_coinbase | |
eth_mining | |
eth_hashrate | |
eth_gasPrice | ✅ |
eth_accounts | |
eth_blockNumber | ✅ |
eth_getBalance | ✅ |
eth_getStorageAt | |
eth_getTransactionCount | ✅ |
eth_getBlockTransactionCountByHash | |
eth_getBlockTransactionCountByNumber | |
eth_getUncleCountByBlockHash | |
eth_getUncleCountByBlockNumber | |
eth_getCode | |
eth_sign | ✅ |
eth_signTransaction | |
eth_sendTransaction | ✅ |
eth_sendRawTransaction | ✅ |
eth_call | ✅ |
eth_estimateGas | ✅ |
eth_getBlockByHash | ✅ |
eth_getBlockByNumber | ✅ |
eth_getTransactionByHash | |
eth_getTransactionByBlockHashAndIndex | |
eth_getTransactionByBlockNumberAndIndex | |
eth_getTransactionReceipt | |
eth_getUncleByBlockHashAndIndex | |
eth_getUncleByBlockNumberAndIndex | |
eth_getCompilers | |
eth_newFilter | |
eth_newBlockFilter | |
eth_newPendingTransactionFilter | |
eth_uninstallFilter | |
eth_getFilterChanges | |
eth_getFilterLogs | |
eth_getLogs | |
eth_getWork | |
eth_submitWork | |
eth_submitHashrate |