{
    "cells": [
        {
            "language": "markdown",
            "source": [
                "# Privnet send ETH\n\nSending ETH on privnet to other accounts."
            ],
            "outputs": []
        },
        {
            "language": "typescript",
            "source": [
                "let receiver = \"0x60c56553495612d4b93b6BC1deffE937223eaF51\"\nlet amountInEth = \"1.0\""
            ],
            "outputs": []
        },
        {
            "language": "typescript",
            "source": [
                "// load environment variables\n(function(){\n\tconst dotenv = require(\"dotenv\") as typeof import(\"dotenv\")\n\tlet { parsed } = dotenv.config({\n\t\tpath: \"../.env\"\n\t})\n\tconsole.log(Object.keys(parsed).sort().join(', '))\n})()"
            ],
            "outputs": []
        },
        {
            "language": "typescript",
            "source": [
                "// import dependencies\nconst axios = (require(\"axios\") as typeof import(\"axios\")).default\nconst ethers = (require(\"ethers\") as typeof import(\"ethers\")).ethers"
            ],
            "outputs": []
        },
        {
            "language": "typescript",
            "source": [
                "const RPC_URL = process.env.PRIVNET_URL || \"\"\n\nRPC_URL"
            ],
            "outputs": []
        },
        {
            "language": "typescript",
            "source": [
                "// eth rpc stuff\n\nlet RPC_ID = 1\n\nasync function callRpc(method: string, params: any[])\n{\n\tlet result = await axios.post(RPC_URL, {\n\t\tjsonrpc: \"2.0\",\n\t\tid: RPC_ID++,\n\t\tmethod,\n\t\tparams,\n\t})\n\t// console.log(result.data)\n\treturn result.data.result\n}\nasync function getBalance(address: string)\n{\n\treturn callRpc(\"eth_getBalance\", [address, \"latest\"])\n}\nfunction toEth(wei: string)\n{\n\treturn ethers.utils.formatEther(wei)\n}\nasync function sendEth(from: string, to: string, value: string)\n{\n\tlet tx = {\n\t\tfrom,\n\t\tto,\n\t\tvalue\n\t}\n\t// console.log(tx)\n\treturn callRpc(\"eth_sendTransaction\", [tx])\n}"
            ],
            "outputs": []
        },
        {
            "language": "typescript",
            "source": [
                "// get balance of current account\nconsole.log(`Balance of ${receiver}:\\n${toEth(await getBalance(receiver))} ETH`)"
            ],
            "outputs": []
        },
        {
            "language": "typescript",
            "source": [
                "let [sender] = await callRpc(\"eth_accounts\", [])\nconsole.log(`Balance of ${sender}:\\n${toEth(await getBalance(sender))} ETH`)"
            ],
            "outputs": []
        },
        {
            "language": "typescript",
            "source": [
                "console.log(`sending ${amountInEth} ETH from ${sender} to ${receiver}`)\nlet result = await sendEth(sender, receiver, ethers.utils.hexValue(ethers.utils.parseEther(amountInEth)))"
            ],
            "outputs": []
        },
        {
            "language": "typescript",
            "source": [
                "// get balance of current account again\nconsole.log(`Balance of ${receiver}:\\n${toEth(await getBalance(receiver))} ETH`)"
            ],
            "outputs": []
        }
    ]
}