Web3 Widget Send Asset and Message to Address

Get 60 0FP0EXP Token to remove widget entirely!

source code



source code
old source code

get any 0FP0EXP Token to automatically turn off or 10 0FP0EXP Token to remove this JavaScript Mining.

Get 50 0FP0EXP Token to remove my NFTS advertisements!

Get 40 0FP0EXP Token to remove this donation notification!

get 30 0FP0EXP Token to remove this paypal donation.

View My Stats

get 20 0FP0EXP Token to remove my personal ADS.

word number: 9514

Time: 2022-11-27 04:30:59 +0000


Recipient:


Amount:
Status:

<select id="write-comment-web3">
    <option value="comment-choose">Donate and/or Write Comment on Web3</option>
    <option value="comment-ethereum">Ethereum & EVMs</option>
    <option value="comment-tron">Tron</option>
    <option value="comment-stellar-freighter">Stellar Lumen Freighter</option>
    <option value="comment-stellar-rabet">Stellar Lumen Rabet</option>
    <option value="comment-neoline-n2">Neoline N2</option>
    <option value="comment-neoline-n3">Neoline N3</option>
    <option value="comment-waves-keeper">Waves Keeper</option>
    <option value="comment-hive-signer">Hive Signer</option>
    <option value="comment-hive-keychain">Hive Keychain</option>
    <option value="comment-wax">Wax</option>
    <option value="comment-solana">Solana</option>
    <option value="comment-ziliqa-zilpay">Ziliqa Zilpay</option>
    <option value="comment-near">Near</option>
    <option value="comment-myalgo">Algorand MyAlgo</option>
    <option value="comment-vechain-sync">Vechain Sync</option>
    <option value="comment-iost-iwallet">IOST IWallet</option>
    <option value="comment-eos-scatter">EOS Scatter</option>
    <option value="comment-eos-anchor">EOS Anchor</option>
    <option value="comment-ontology-wallets">Ontology Wallets</option>
</select>
<button onclick="write_comment_web3()">Comment</button>
<br />
Recipient: <input type="text" id="comment-recipient" style="width: 100%" name="comment-recipient" value="input public address or key"/>
<br />
<textarea id="comment-message" style="width: 100%" rows="4" name="comment-message" value="Put your comment here.">Put your comment here.</textarea>
<br />
Amount: <input type="number" id="comment-amount" style="width: 100%" name="comment-amount" value="0.1" step=".1"/>
<br />
Status: <span id="comment-status"></span>
<br />

<script src="https://cdn.ethers.io/lib/ethers-5.2.umd.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/hivesigner@3.2.7/lib/hivesigner.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/stellar-freighter-api/1.1.2/index.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/stellar-sdk/10.1.0/stellar-sdk.min.js"></script>
<script src="https://0fajarpurnama0.github.io/assets/js/3rdpartyweb3/waxjs.js"></script>
<script src="https://cdn.jsdelivr.net/npm/near-api-js@0.41.0/dist/near-api-js.min.js"></script>
<script src="https://github.com/randlabs/myalgo-connect/releases/download/v1.1.3/myalgo.min.js"></script>
<script src="https://unpkg.com/algosdk@v1.16.0/dist/browser/algosdk.min.js"></script>
<script src="https://unpkg.com/@vechain/connex@2"></script>
<script src="https://cdn.jsdelivr.net/npm/iost@0.1.22/dist/iost.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/scatterjs/@scatterjs/core@2.7.54/scatterjs-core.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/scatterjs/@scatterjs/core@2.7.54/scatterjs-plugin-eosjs.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/scatterjs/@scatterjs/core@2.7.54/scatterjs-plugin-eosjs2.min.js"></script>
<script src="https://0fajarpurnama0.github.io/assets/js/3rdpartyweb3/eosjsweb/externals.min.js"></script>
<script src="https://0fajarpurnama0.github.io/assets/js/3rdpartyweb3/eosjsweb/eosjs-api.min.js"></script>
<script src="https://0fajarpurnama0.github.io/assets/js/3rdpartyweb3/eosjsweb/eosjs-jsonrpc.min.js"></script>
<script src="https://0fajarpurnama0.github.io/assets/js/3rdpartyweb3/eosjsweb/eosjs-jssig.min.js"></script>
<script src="https://0fajarpurnama0.github.io/assets/js/3rdpartyweb3/eosjsweb/eosjs-numeric.min.js"></script>
<script src="https://unpkg.com/anchor-link@3"></script>
<script src="https://unpkg.com/anchor-link-browser-transport@3"></script>
<script src="https://0fajarpurnama0.github.io/assets/js/3rdpartyweb3/ontology-dapi/browser.js"></script>

<script>
document.getElementById("comment-recipient").addEventListener("change", changerecipientinput);

let comment_recipient = document.getElementById("comment-recipient").value;

function changerecipientinput() {
  comment_recipient = document.getElementById("comment-recipient").value;
}

function ascii_to_hex(str) {
  var arr1 = [];
  for (var n = 0, l = str.length; n < l; n ++) 
    {
    var hex = Number(str.charCodeAt(n)).toString(16);
    arr1.push(hex);
    }
  return arr1.join('');
}

document.getElementById("comment-amount").addEventListener("change", changeamountinput);

let comment_amount = document.getElementById("comment-amount").value;

function changeamountinput() {
  comment_amount = document.getElementById("comment-amount").value;
}

document.getElementById("comment-message").addEventListener("change", changemessageinput);

let comment_message = document.getElementById("comment-message").value;

function changemessageinput() {
  comment_message = document.getElementById("comment-message").value;
}

document.getElementById("write-comment-web3").addEventListener("change", changecommentblockchain);

function changecommentblockchain(){
  switch(document.getElementById("write-comment-web3").value) {
    case 'comment-ethereum':
      document.getElementById("comment-recipient").value = '0x3D4c67A2A40bC24ec53ab767b9247c02A2250BCB';
      document.getElementById("comment-message").value = 'Message size depends on maximum gas limit';
      break;
    case 'comment-tron':
      document.getElementById("comment-recipient").value = 'TFZKkTh3M3z2hAKyjeu9MjGabeZYrKEmsY';
      document.getElementById("comment-message").value = 'Message size depends on tron resource located';
      break;
    case 'comment-stellar-freighter':
      document.getElementById("comment-recipient").value = 'GB3Y7ZMPZEWY7P6TKH3N22VKMBOD4ILCV3UN3IMMRUADKDGNZKL73DSM';
      document.getElementById("comment-message").value = 'Max message size 28 Bytes or Char';
      break;
    case 'comment-stellar-rabet':
      document.getElementById("comment-recipient").value = 'GB3Y7ZMPZEWY7P6TKH3N22VKMBOD4ILCV3UN3IMMRUADKDGNZKL73DSM';
      document.getElementById("comment-message").value = 'Max message size 28 Bytes or Char';
      break;
    case 'comment-neoline-n2':
      document.getElementById("comment-recipient").value = 'Abd2G4ceprVzUymJGy1Cv9dSkrWbisVAar';
      document.getElementById("comment-message").value = 'Message size depends on maximum gas limit';
      break;
    case 'comment-neoline-n3':
      document.getElementById("comment-recipient").value = 'NeUAs33FZJzNzgt1oaPTpYRv5t5gZWiHS8';
      document.getElementById("comment-message").value = 'Not supported! Send me a message on other lines if you know how. Though you can still donate!';
      break;
    case 'comment-waves-keeper':
      document.getElementById("comment-recipient").value = '3PKroXzTJYKidcTU7CuVj7ZJCyqokZ6cpCe';
      document.getElementById("comment-message").value = 'Max message size 140 Bytes or Char';
      break;
    case 'comment-hive-signer':
      document.getElementById("comment-recipient").value = 'fpdev';
      document.getElementById("comment-message").value = 'Max message size depends on resource allocated';
      break;
    case 'comment-hive-keychain':
      document.getElementById("comment-recipient").value = 'fpdev';
      document.getElementById("comment-message").value = 'Max message size depends on resource allocated';
      break;
    case 'comment-wax':
      document.getElementById("comment-recipient").value = 'nbjaw.wam';
      document.getElementById("comment-message").value = 'Max message size depends on resource allocated';
      break;
    case 'comment-solana':
      document.getElementById("comment-recipient").value = 'G6Ha3ibcMMFiRjWMCA3YEioC1NDfrKEb3NEFEwevXZxb';
      document.getElementById("comment-message").value = 'Not supported! Send me a message on other lines if you know how. Though you can still donate!';
      break;
    case 'comment-ziliqa-zilpay':
      document.getElementById("comment-recipient").value = 'zil1kshm5ad33nkh8usfuau7ymq28phrredcnj2fxm';
      document.getElementById("comment-message").value = 'Not supported! Send me a message on other lines if you know how. Though you can still donate!';
      break;
    case 'comment-near':
      document.getElementById("comment-recipient").value = 'fajarpurnama.near';
      document.getElementById("comment-message").value = 'Not supported! Send me a message on other lines if you know how. Though you can still donate!';
      break;
    case 'comment-myalgo':
      document.getElementById("comment-recipient").value = 'OHOLBJ4OUNLR5MPPLZ7O7D2BBKTELDWJPRF5KR7VM54RBJNA5MBCSYIIS4';
      document.getElementById("comment-message").value = 'Max Size Uint8Array';
      break;
    case 'comment-vechain-sync':
      document.getElementById("comment-recipient").value = '0xB9e12b1240b3eADc2f07d892e847256526526320';
      document.getElementById("comment-message").value = 'No decimals are allowed in amount below! Refresh page before using other wallets!';
      document.getElementById("comment-amount").value = 1;
      document.getElementById("comment-amount").step = "1";
      document.getElementById("comment-amount").addEventListener("change", function() {
        document.getElementById("comment-amount").value = Math.ceil(document.getElementById("comment-amount").value);
      });
      break;
    case 'comment-iost-iwallet':
      document.getElementById("comment-recipient").value = '0donation0';
      document.getElementById("comment-message").value = 'Max size depends on resource allocated.';
      break;
    case 'comment-eos-scatter':
      document.getElementById("comment-recipient").value = 'urf5n4htf5em';
      document.getElementById("comment-message").value = 'Max size depends on resource allocated.';
      break;
    case 'comment-eos-anchor':
      document.getElementById("comment-recipient").value = 'urf5n4htf5em';
      document.getElementById("comment-message").value = 'Max size depends on resource allocated.';
      break;
    case 'comment-ontology-wallets':
      document.getElementById("comment-recipient").value = 'AZsLt6ZAH31KbwB4TjTc8jMnZvp1XdbWwk';
      document.getElementById("comment-message").value = 'Not supported! Send me a message on other lines if you know how. Though you can still donate!';
      break;
    default:
      document.getElementById("comment-message").value = 'Unknown errors have occured';
  }
  changerecipientinput();
}

function write_comment_web3(){
  switch(document.getElementById("write-comment-web3").value) {
    case 'comment-ethereum':
      write_comment_web3_evm();
      break;
    case 'comment-tron':
      write_comment_web3_tron();
      break;
    case 'comment-stellar-freighter':
      write_comment_web3_stellar_freighter();
      break;
    case 'comment-stellar-rabet':
      write_comment_web3_stellar_rabet();
      break;
    case 'comment-neoline-n2':
      write_comment_web3_neoline_n2();
      break;
    case 'comment-neoline-n3':
      write_comment_web3_neoline_n3();
      break;
    case 'comment-waves-keeper':
      write_comment_web3_waves_keeper();
      break;
    case 'comment-hive-signer':
      write_comment_web3_hive_signer();
      break;
    case 'comment-hive-keychain':
      write_comment_web3_hive_keychain();
      break;
    case 'comment-wax':
      write_comment_web3_wax();
      break;
    case 'comment-solana':
      write_comment_web3_solana();
      break;
    case 'comment-ziliqa-zilpay':
      write_comment_web3_ziliqa_zilpay();
      break;
    case 'comment-near':
      write_comment_web3_near();
      break;
    case 'comment-myalgo':
      write_comment_web3_myalgo();
      break;
    case 'comment-vechain-sync':
      write_comment_web3_vechain_sync();
      break;
    case 'comment-iost-iwallet':
      write_comment_web3_iost_iwallet();
      break;
    case 'comment-eos-scatter':
      write_comment_web3_eos_scatter();
      break;
    case 'comment-eos-anchor':
      write_comment_web3_eos_anchor();
      break;
    case 'comment-ontology-wallets':
      write_comment_web3_ontology_wallets();
      break;
    default:
      document.getElementById("comment-message").value = 'Unknown errors have occured';
  }
}

//Sending EVM and message to an address
async function write_comment_web3_evm() {
  const accounts = await ethereum.request({ method: 'eth_requestAccounts' });
  comment_message = "0x" + ascii_to_hex(comment_message);
  comment_amount = "0x" + (parseFloat(comment_amount)*10**18).toString(16);

  params = [
      {
      from: accounts[0],
      to: comment_recipient,
      value: comment_amount,
      gasPrice: await ethereum.request({method: 'eth_gasPrice', params: []}),
      gas: '', //auto
      data: comment_message
      },
    ];

  ethereum
    .request({
    method: 'eth_sendTransaction',
    params,
    })
    .then((txHash) => document.getElementById("comment-status").innerHTML = txHash.result)
    .catch((error) => document.getElementById("comment-status").innerHTML = error.message + " (install any evm wallet for example <a href='https://metamask.io/download/'>Metamask</a> if you have not)");
}

// Sending TRX and message to address
async function write_comment_web3_tron() {
  try {
    let from = window.tronWeb.defaultAddress.base58;
    let to = comment_recipient;
    let amount = comment_amount;
    let tx = await window.tronWeb.transactionBuilder.sendTrx(to, amount*10**6, from);
    let txm = await window.tronWeb.transactionBuilder.addUpdateData(tx,comment_message);
    let signedTx = await window.tronWeb.trx.sign(txm);
    let broastTx = await window.tronWeb.trx.sendRawTransaction(signedTx);
    console.log(broastTx);
    document.getElementById("comment-status").innerHTML = '<a href="https://tronscan.io/#/transaction/' + broastTx.txid + '">' + broastTx.txid + '</a>';
  }
  catch(error) {
    document.getElementById("comment-status").innerHTML = error.message + " (install any tron wallet for example <a href='https://www.tronlink.org/'>TronLink</a> if you have not)";
  }
}

// Sending Stellar and message to address
async function write_comment_web3_stellar_freighter() {
  let stellar_current_network = await window.freighterApi.getNetwork();
  let stellar_public_key = await window.freighterApi.getPublicKey();
  let stellar_memo = StellarSdk.Memo.text(comment_message); //max 28 Bytes
  let stellar_horizon_server = new StellarSdk.Server("https://horizon.stellar.org");
  stellar_horizon_server
  .accounts()
  .forSigner(await window.freighterApi.getPublicKey())
  .call()
  .then(async function (resp) {
    let stellar_public_key_sequence_number = await resp.records[0].sequence;
    let stellar_account = new window.StellarSdk.StellarBase.Account(stellar_public_key, stellar_public_key_sequence_number);
    let stellar_transaction = new window.StellarSdk.StellarBase.TransactionBuilder(stellar_account, {
      fee: window.StellarSdk.StellarBase.BASE_FEE,
      networkPassphrase: window.StellarSdk.Networks.PUBLIC
    })
    .addOperation(window.StellarSdk.StellarBase.Operation.payment({
            destination: comment_recipient,
            asset: window.StellarSdk.StellarBase.Asset.native(),
            amount: comment_amount
    }))
    .addMemo(stellar_memo)
    .setTimeout(30)
    .build();
  
    let stellar_signedTransaction = await window.freighterApi.signTransaction(stellar_transaction.toXDR(), stellar_current_network);
    let stellar_transactionToSubmit = StellarSdk.TransactionBuilder.fromXDR(
      stellar_signedTransaction,
      window.StellarSdk.Networks.PUBLIC
    );
    let response = await stellar_horizon_server.submitTransaction(stellar_transactionToSubmit);
    document.getElementById("comment-status").innerHTML = `<a href="`+response._links.transaction.href+`">`+response._links.transaction.href+`</a>`;
  })
  .catch(function (error) {
    document.getElementById("comment-status").innerHTML = error.message + " (install <a href='https://www.freighter.app/'>freighter wallet</a> if you have not)";
  });
}

// Sending Stellar and message to address
async function write_comment_web3_stellar_rabet() {
  try {
    await window.rabet.connect()
    .then(result => stellar_public_key = result.publicKey)
    .catch(error => document.getElementById("comment-status").innerHTML = error.message);
    let stellar_memo = StellarSdk.Memo.text(comment_message); //max 28 Bytes
    let stellar_horizon_server = new StellarSdk.Server("https://horizon.stellar.org");
    stellar_horizon_server
    .accounts()
    .forSigner(stellar_public_key)
    .call()
    .then(async function (resp) {
      let stellar_public_key_sequence_number = await resp.records[0].sequence;
      let stellar_account = new window.StellarSdk.StellarBase.Account(stellar_public_key, stellar_public_key_sequence_number);
      let stellar_transaction = new window.StellarSdk.StellarBase.TransactionBuilder(stellar_account, {
        fee: window.StellarSdk.StellarBase.BASE_FEE,
        networkPassphrase: window.StellarSdk.Networks.PUBLIC
      })
      .addOperation(window.StellarSdk.StellarBase.Operation.payment({
        destination: comment_recipient,
        asset: window.StellarSdk.StellarBase.Asset.native(),
        amount: comment_amount
      }))
      .addMemo(stellar_memo)
      .setTimeout(30)
      .build();
  
      await window.rabet.sign(stellar_transaction.toXDR(), window.StellarSdk.Networks.PUBLIC)
      .then(result => stellar_signedTransaction = result.xdr)
      .catch(error => document.getElementById("comment-status").innerHTML = error.message)
  
      let envelope = window.StellarSdk.xdr.TransactionEnvelope.fromXDR(stellar_signedTransaction, 'base64');
      let stellar_transactionToSubmit = new window.StellarSdk.Transaction(envelope, window.StellarSdk.Networks.PUBLIC);
      const response = await stellar_horizon_server.submitTransaction(stellar_transactionToSubmit);
      document.getElementById("comment-status").innerHTML = `<a href="`+response._links.transaction.href+`">`+response._links.transaction.href+`</a>`;
    })
    .catch(function (error) {
      document.getElementById("comment-status").innerHTML = error.message;
    });
  } catch(error) {
    document.getElementById("comment-status").innerHTML = error.message + " (install <a href='https://rabet.io/download'>rabet wallet</a> if you have not)"
  }
}

// Sending from Neoline and message to address
let neoline;
let neolineN3;
let neoline_account;

window.addEventListener('NEOLine.NEO.EVENT.READY', () => {
  neoline = new NEOLine.Init();
});

window.addEventListener('NEOLine.N3.EVENT.READY', () => {
  neolineN3 = new NEOLineN3.Init();
});

window.addEventListener('NEOLine.NEO.EVENT.ACCOUNT_CHANGED', () => {
  neoline = new NEOLine.Init();
});

window.addEventListener('NEOLine.N3.ACCOUNT_CHANGED', () => {
  neolineN3 = new NEOLineN3.Init();
});

function write_comment_web3_neoline_n2() {
  try {
    neoline.getAccount()
    .then(account => {
      neoline_account = account;
      neoline.getNetworks()
      .then(result => {
        const {
          networks,
          defaultNetwork
        } = result;

        neoline.send({
          fromAddress: neoline_account.address,
          toAddress: comment_recipient,
          asset: 'GAS',
          amount: comment_amount,
          remark: comment_message,
          //fee: '0.0001', // default if ommitted
          network: defaultNetwork,
          broadcastOverride: false
        })
        .then(result => {
          document.getElementById("comment-status").innerHTML = '<a href="https://neo.tokenview.com/en/tx/' + result.txid + '">' + result.txid + '</a>';
          console.log('RPC node URL: ' + result.nodeURL);
        })
        .catch((error) => {
          const {type, description, data} = error;
          switch(type) {
            case 'NO_PROVIDER':
              document.getElementById("comment-status").innerHTML = 'No provider available.';
              break;
            case 'RPC_ERROR':
              document.getElementById("comment-status").innerHTML = 'There was an error when broadcasting this transaction to the network.';
              break;
            case 'MALFORMED_INPUT':
              document.getElementById("comment-status").innerHTML = 'The receiver address provided is not valid.';
              break;
            case 'CANCELED':
              document.getElementById("comment-status").innerHTML = 'The user has canceled this transaction.';
              break;
            case 'INSUFFICIENT_FUNDS':
              document.getElementById("comment-status").innerHTML = 'The user has insufficient funds to execute this transaction.';
              break;
            default:
              // Not an expected error object.  Just write the error to the console.
              document.getElementById("comment-status").innerHTML = error.message;
              break;
          }
        });
      })
      .catch((error) => {
        const {type, description, data} = error;
        switch(type) {
          case 'NO_PROVIDER':
            document.getElementById("comment-status").innerHTML = 'No provider available.';
            break;
          case 'CONNECTION_DENIED':
            document.getElementById("comment-status").innerHTML ='The user rejected the request to connect with your dApp';
            break;
          default:
            // Not an expected error object.  Just write the error to the console.
            document.getElementById("comment-status").innerHTML = error.message;
            break;
        }
      });
    })
    .catch(error => {
      document.getElementById("comment-status").innerHTML = error.message;
    })
  } catch(error) {
    document.getElementById("comment-status").innerHTML = error.message + " (install <a href='https://neoline.io/en/'>neoline wallet</a> if you have not)";
  }
}

function write_comment_web3_neoline_n3() {
  try {
    neolineN3.getAccount()
    .then(account => {
      neoline_account = account;
      neolineN3.send({
        fromAddress: neoline_account.address,
        toAddress: comment_recipient,
        asset: 'GAS',
        amount: comment_amount,
        //fee: '0.0001', //default if ommitted
        broadcastOverride: false
      })
      .then(result => {
          console.log('Send transaction success!');
          document.getElementById("comment-status").innerHTML = 'Transaction ID: ' + result.txid;
          console.log('RPC node URL: ' + result.nodeURL);
      })
      .catch((error) => {
          const {type, description, data} = error;
          switch(type) {
              case 'NO_PROVIDER':
                document.getElementById("comment-status").innerHTML = 'No provider available.';
                break;
              case 'RPC_ERROR':
                document.getElementById("comment-status").innerHTML = 'There was an error when broadcasting this transaction to the network.';
                break;
              case 'MALFORMED_INPUT':
                document.getElementById("comment-status").innerHTML = 'The receiver address provided is not valid.';
                break;
              case 'CANCELED':
                document.getElementById("comment-status").innerHTML = 'The user has canceled this transaction.';
                break;
              case 'INSUFFICIENT_FUNDS':
                document.getElementById("comment-status").innerHTML = 'The user has insufficient funds to execute this transaction.';
                break;
              default:
                // Not an expected error object.  Just write the error to the console.
                document.getElementById("comment-status").innerHTML = error.message;
                break;
          }
      });
    })
    .catch(error => {
      document.getElementById("comment-status").innerHTML = error.message;
    })
  } catch(error) {
    document.getElementById("comment-status").innerHTML = error.message + " (install <a href='https://neoline.io/en/'>neoline wallet</a> if you have not)";
  }
};

// Sending from Keeper and message to address
async function write_comment_web3_waves_keeper() {
  try {
    const txData = {
      type: 4,
      data: {
        amount: {
          assetId: 'WAVES',
          tokens: comment_amount,
        },
        fee: {
          assetId: 'WAVES',
          tokens: '0.001',
        },
        recipient: comment_recipient,
        attachment: comment_message,
      },
    };
    KeeperWallet.signAndPublishTransaction(txData)
      .then(data => {
        json_parsed_data = JSON.parse(data);
        document.getElementById("comment-status").innerHTML = '<a href="https://wavesexplorer.com/tx/' + json_parsed_data.id + '">' + json_parsed_data.id + '</a>';
      })
      .catch(error => {
        document.getElementById("comment-status").innerHTML = error.message;
      });
  } catch(error) {
    document.getElementById("comment-status").innerHTML = error.message + " (install <a href='https://keeper-wallet.app/'>keeper wallet</a> if you have not)";
  }
}

// Sending from hive signer and message to address
async function write_comment_web3_hive_signer() {
  try {
    let client = new hivesigner.Client({
      app: 'fpdev',
      callbackURL: 'http://127.0.0.1:5500/',
      scope: ['vote', 'comment', 'offline', 'login']
    });
    let link = await client.getLoginURL();
    await client.login(link); // or await window.open(link, '_blank');
    const hivesigner_query_string = new Proxy(new URLSearchParams(window.location.search), {
      get: (searchParams, prop) => searchParams.get(prop),
    });
    client.setAccessToken(hivesigner_query_string.code);
    const op = ['transfer', {
      from: hivesigner_query_string.username,
      to: comment_recipient,
      amount: comment_amount + ' HIVE',
      memo: comment_message
    }];
    hivesigner.sendOperation(op, {callback: 'http://127.0.0.1:5500/'}, function(err, result) {
      document.getElementById("comment-status").innerHTML = err + result;
    });
  } catch(error) {
    document.getElementById("comment-status").innerHTML = error.message;
  }
}

// Sending from wax and message to address
async function write_comment_web3_wax() {
  try {
    let wax = new waxjs.WaxJS({
      rpcEndpoint: 'https://wax.greymass.com'
    });
    const userAccount = await wax.login();
    const result = await wax.api.transact({
      actions: [{
        account: 'eosio.token',
        name: 'transfer',
        authorization: [{
          actor: userAccount,
          permission: 'active',
        }],
        data: {
          from: userAccount,
          to: comment_recipient,
          quantity: comment_amount + ' WAX',
          memo: comment_message,
        },
      }]
    }, {
      blocksBehind: 3,
      expireSeconds: 1200,
    });
    document.getElementById("comment-status").innerHTML = result;
  } catch(error) {
    document.getElementById("comment-status").innerHTML = error.message;
  }
}

// Sending from hive keychain and message to address
async function write_comment_web3_hive_keychain() {
  try{
    hive_keychain.requestHandshake(function () {
      let username = prompt("Please enter your username", "");
      hive_keychain.requestTransfer(username, comment_recipient, parseFloat(comment_amount).toFixed(3), comment_message, 'HIVE');
    });
  } catch(error) {
    document.getElementById("comment-status").innerHTML = error.message + " (1) install <a href='https://hive-keychain.com/'>Hive Keychain</a>, (2) Import your accounts and keys from <a href='https://wallet.hive.blog/'>Hive Wallet</a>.";
  }
}

// Sending from Solana and message to address
async function write_comment_web3_solana() {
  try {
    const resp = await window.solana.connect();

    let connection = new solanaWeb3.Connection(
      solanaWeb3.clusterApiUrl('mainnet-beta'),
      'confirmed',
    );

    let recieverWallet = new solanaWeb3.PublicKey(comment_recipient);

    const transaction = new solanaWeb3.Transaction().add(
      solanaWeb3.SystemProgram.transfer({
        fromPubkey: resp.publicKey,
        toPubkey: recieverWallet,
        lamports: solanaWeb3.LAMPORTS_PER_SOL * comment_amount //Remember 1 Lamport = 10^-9 SOL.
      }),
    );

    transaction.feePayer = await resp.publicKey;
    let blockhashObj = await connection.getRecentBlockhash();
    transaction.recentBlockhash = await blockhashObj.blockhash;

    if(transaction) {
      console.log("Txn created successfully: " + transaction);
    }

    const { signature } = await window.solana.signAndSendTransaction(transaction);
    await connection.confirmTransaction(signature);

    document.getElementById("comment-status").innerHTML = "Signature: " + signature;

  } catch (error) {
    document.getElementById("comment-status").innerHTML = error.message + " (install any Solana Wallet for example <a href='https://phantom.app/download'>Phantom Wallet</a> if you have not)";
  }
}

// Sending message from Ziliqa Zilpay
async function write_comment_web3_ziliqa_zilpay() {
  try {
    await window.zilPay.wallet.connect();
    const amount = zilPay.utils.units.toQa(comment_amount, zilPay.utils.units.Units.Zil); // 1 zil
    //const gasPrice = zilPay.utils.units.toQa('1000', zilPay.utils.units.Units.Li); //set otherwise automatic
    const txParams = window.zilPay.transactions.new({ // Create params for our trasnaction.
      toAddr: comment_recipient,
      amount: amount,
      gasPrice: '' //auto or set yourself
    });
    const txResult = await window.zilPay.blockchain.createTransaction(txParams);
    document.getElementById("comment-status").innerHTML = txResult;
  } catch (error) {
    document.getElementById("comment-status").innerHTML = error.message + " (install <a href='https://zilpay.io/'>Zilpay</a> if you have not)";
  }
}

// Sending message from Near
async function write_comment_web3_near() {
  try {
    const config = {
      networkId: "mainnet",
      keyStore: await new nearApi.keyStores.BrowserLocalStorageKeyStore(),
      nodeUrl: "https://rpc.mainnet.near.org",
      walletUrl: "https://wallet.mainnet.near.org",
      helperUrl: "https://helper.mainnet.near.org",
      explorerUrl: "https://explorer.mainnet.near.org",
    };
    const near = await nearApi.connect(config);
    const wallet = await new nearApi.WalletConnection(near);
    if(wallet.isSignedIn()) {
      const walletAccountObj = await wallet.account();
      await walletAccountObj.sendMoney(
        comment_recipient, // receiver account
        BigInt(1000000000000000000 * 10**6 * comment_amount) // amount in yoctoNEAR
      );
    } else {
      wallet.requestSignIn({ contractId: comment_recipient });
    }
  } catch(error) {
    document.getElementById("comment-status").innerHTML = error.message;
  }
}

// Send Algo and Message MyAlgo Wallet
async function write_comment_web3_myalgo() {
  try{
    const myAlgoConnect = new MyAlgoConnect();
    const accountsSharedByUser = await myAlgoConnect.connect();
    const algodClient = new algosdk.Algodv2('', 'https://node.algoexplorerapi.io', '');
    const params = await algodClient.getTransactionParams().do();
    const note = new TextEncoder("utf-8").encode(comment_message);
    const sender = accountsSharedByUser[0].address;
    const receiver = comment_recipient;
    const amount = comment_amount * 1000000;
    const txn = algosdk.makePaymentTxnWithSuggestedParamsFromObject({
      suggestedParams: params,
      from: sender,
      to: receiver,
      amount: amount,
      note: note
    });
    const signedTxn = await myAlgoConnect.signTransaction(txn.toByte());
    const response = await algodClient.sendRawTransaction(signedTxn.blob).do();
    document.getElementById("comment-status").innerHTML = response;
  } catch(error) {
    document.getElementById("comment-status").innerHTML = error.message;
  }
}

// Send VET and message Sync Wallet
async function write_comment_web3_vechain_sync() {
  try{
    const connex = new Connex({
      node: 'https://mainnet.veblocks.net/', // veblocks public node, use your own if needed
      network: 'main' // defaults to mainnet, so it can be omitted here
    })
    const vendor = new Connex.Vendor('main'); // 'main','test' or genesis ID if it's private network
    const amount = Math.trunc(comment_amount);
    document.getElementById("comment-amount").value = amount;

    const signedtx =  vendor.sign('tx', [{
      to: comment_recipient,
      value: amount + '0'.repeat(18)    
    }])
    .comment(comment_message)
    .link(window.location.href)
    .request()
    .then(result => {document.getElementById("comment-status").innerHTML = result})
    .catch(error => {document.getElementById("comment-status").innerHTML = error.message})
  } catch(error) {
    document.getElementById("comment-status").innerHTML = error.message;
  }
}

// Send IOST and memo IWallet
async function write_comment_web3_iost_iwallet() {
  try {
    IWalletJS.enable().then((account) => {
      const iost = IWalletJS.newIOST(IOST);
      const fromAccount = account;
      const toAccount = comment_recipient;
      const amount = comment_amount;
      const memo = comment_message;
      const tx = iost.callABI(
        "token.iost",
        "transfer",
        ["iost", fromAccount, toAccount, amount, memo]
      );
      tx.addApprove('iost', amount);
      iost.signAndSend(tx)
      .on('pending', (pending) => {
        document.getElementById("comment-status").innerHTML = pending;
      })
      .on('success', (result) => {
        document.getElementById("comment-status").innerHTML = '<a href="https://www.iostabc.com/tx/'+result.tx_hash+'">'+result.tx_hash+'</a>';
      })
      .on('failed', (failed) => {
        document.getElementById("comment-status").innerHTML = failed;
      })
    }).catch((error) => {
      document.getElementById("comment-status").innerHTML = error;
    })
  } catch(error) {
    document.getElementById("comment-status").innerHTML = error + '. Please install <a href="https://github.com/iost-official/iost-extension/releases">IWallet</a>.';
  }
}

// Send EOS and memo Scatter
async function write_comment_web3_eos_scatter() {
  await ScatterJS.plugins( new ScatterEOS() );

  const network = ScatterJS.Network.fromJson({
    blockchain:'eos',
    chainId:'aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906',
    host:'nodes.get-scatter.com',
    port:443,
    protocol:'https'
  });

  const rpc = new eosjs_jsonrpc.JsonRpc(network.fullhost());

  ScatterJS.connect('YourAppName', {network}).then(connected => {
    if(!connected) return document.getElementById("comment-status").innerHTML = 'no scatter';
    const eos = ScatterJS.eos(network, eosjs_api.Api, {rpc});
    ScatterJS.login().then(id => {
        if(!id) return document.getElementById("comment-status").innerHTML = 'no identity';
        const account = ScatterJS.account('eos');
        eos.transact({
            actions: [{
                account: 'eosio.token',
                name: 'transfer',
                authorization: [{
                    actor: account.name,
                    permission: account.authority,
                }],
                data: {
                    from: account.name,
                    to: comment_recipient,
                    quantity: comment_amount.toFixed(4) + ' EOS',
                    memo: comment_message,
                },
            }]
        }, {
            blocksBehind: 3,
            expireSeconds: 30,
        }).then(res => {
          document.getElementById("comment-status").innerHTML = 'tx sent: ' + res;
        }).catch(err => {
          document.getElementById("comment-status").innerHTML = 'tx error: ' + err;
        });
    });
  });
}

// Send EOS and memo Anchor
async function write_comment_web3_eos_anchor() {
  const transport = new AnchorLinkBrowserTransport()
  const link = new AnchorLink({
      transport,
      chains: [
          {
              chainId: 'aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906',
              nodeUrl: 'https://eos.greymass.com',
          }
      ],
  })

  const identity = await link.login('mydapp');

  const {session} = identity;

  const action = {
      account: 'eosio.token',
      name: 'transfer',
      authorization: [session.auth],
      data: {
          from: session.auth.actor,
          to: comment_recipient,
          quantity: comment_amount.toFixed(4) + ' EOS', // must be 4 decimals
          memo: comment_message
      },
  }

  session.transact({action}).then(({transaction}) => {
    document.getElementById("comment-status").innerHTML = '<a href="https://bloks.io/transaction/'+transaction.id+'">'+transaction.id+'</a>';
  }).catch(({error}) => {
    document.getElementById("comment-status").innerHTML = error.message + '. Please install <a href="https://greymass.com/en/anchor/download">Anchor</a> if you have not.';
  })
}

// Send Ontology Assets
async function write_comment_web3_ontology_wallets() {
  try {
    const client = dApi.client;
    client.registerClient({});
    const to = comment_recipient;
    const asset = 'ONG';
    const amount = comment_amount * 10**9;
    const result = await client.api.asset.send({ to, asset, amount });
    document.getElementById("comment-status").innerHTML = '<a href="https://explorer.ont.io/tx/'+result+'">'+result+'</a>';
  } catch(error) {
    document.getElementById("comment-status").innerHTML = error.message + '. Please install <a href="https://github.com/ontio/cyano-wallet">Cyano</a> or other wallets if you have not.';
  }
}
</script>

Repository: https://github.com/0fajarpurnama0/0fajarpurnama0.github.io/blob/master/_posts/2022-03-03-web3-send-asset-message.md