|
@ -0,0 +1,58 @@ |
|
|
|
|
|
// For Node >= v13 / es module environments
|
|
|
|
|
|
import BlocknativeSdk from 'bnc-sdk' |
|
|
|
|
|
import Web3 from 'web3' |
|
|
|
|
|
import WebSocket from 'ws' // only neccessary in server environments
|
|
|
|
|
|
|
|
|
|
|
|
import contractABI from './MoonbirdPunks.json' assert { type: 'json' } |
|
|
|
|
|
|
|
|
|
|
|
// create options object
|
|
|
|
|
|
const options = { |
|
|
|
|
|
dappId: 'd30463f1-eb29-42b8-8059-e5596e13d0fe', |
|
|
|
|
|
networkId: 3, |
|
|
|
|
|
system: 'ethereum', // optional, defaults to ethereum
|
|
|
|
|
|
transactionHandlers: [event => console.log(event.transaction)], |
|
|
|
|
|
ws: WebSocket, // only neccessary in server environments
|
|
|
|
|
|
name: 'Instance name here', // optional, use when running multiple instances
|
|
|
|
|
|
onerror: (error) => {console.log(error)} //optional, use to catch errors
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// initialize and connect to the api
|
|
|
|
|
|
const blocknative = new BlocknativeSdk(options) |
|
|
|
|
|
|
|
|
|
|
|
await blocknative.configuration({ |
|
|
|
|
|
scope: "0x7d82a88Efb60Bb83B3f1665757c20D07E5C0f3ED", // [required] - either 'global' or valid Ethereum address
|
|
|
|
|
|
abi: contractABI.abi, // [optional] - valid contract ABI
|
|
|
|
|
|
watchAddress: true // [optional] - Whether the server should automatically watch the "scope" value if it is an address
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
// returns a promise that resolves once the configuration has been applied
|
|
|
|
|
|
// or rejects if there was a problem with the configuration
|
|
|
|
|
|
|
|
|
|
|
|
// initialize web3
|
|
|
|
|
|
// const web3 = new Web3(window.ethereum)
|
|
|
|
|
|
|
|
|
|
|
|
// get current account
|
|
|
|
|
|
// const accounts = await web3.eth.getAccounts();
|
|
|
|
|
|
const address = "0x7d82a88Efb60Bb83B3f1665757c20D07E5C0f3ED" |
|
|
|
|
|
|
|
|
|
|
|
// call with the address of the account that you would like to receive status updates for
|
|
|
|
|
|
const { |
|
|
|
|
|
emitter, // emitter object to listen for status updates
|
|
|
|
|
|
details // initial account details which are useful for internal tracking: address
|
|
|
|
|
|
} = blocknative.account(address) |
|
|
|
|
|
|
|
|
|
|
|
console.log(`Watching for events on ${address}...`) |
|
|
|
|
|
|
|
|
|
|
|
// listen to some events
|
|
|
|
|
|
emitter.on('txPool', transaction => { |
|
|
|
|
|
console.log(`Sending ${transaction.value} wei to ${transaction.to}`) |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
emitter.on('txConfirmed', transaction => { |
|
|
|
|
|
console.log('Transaction is confirmed!') |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
// catch every other event that occurs and log it
|
|
|
|
|
|
emitter.on('all', transaction => { |
|
|
|
|
|
console.log(`Transaction event: ${transaction.eventCode}`) |
|
|
|
|
|
}) |