ERC-20 tokens is smart contract built on top of Ethereum. User can create new crypto assets without need to setup a complex blockchain cryptocoin infastructure.
<?php use kornrunner\Ethereum\Transaction; use EthereumRPC\Contracts; use kornrunner\Keccak; include_once "../libraries/vendor/autoload.php"; include_once("html_iframe_header.php"); include_once("eth_utils.php"); define("GWEI_TO_WEI",'1000000000'); $supportChains = ['1'=>"Ethereum Mainnet", '3'=>"Ethereum Testnet Ropsten"]; if ($_SERVER['REQUEST_METHOD'] == 'POST') { try { $nonce = bcdechex($_POST['nonce']); $gasPrice = bcdechex(bcmul($_POST['gas_price'],GWEI_TO_WEI, 18)); $gasLimit = bcdechex($_POST['gas_limit']); $to = $_POST['contract_addr']; $amount = "0"; $source = file_get_contents('erc20.abi'); $decoded = json_decode($source, true); $abi = new Contracts\ABI($decoded); $recipient = $_POST['recipient']; $tokenAmount = bcmul($_POST['token_amount'], bcpow("10", $_POST['token_decimals'], 0), 0); $data = $abi->encodeCall("transfer", [$recipient, $tokenAmount]); $transaction = new Transaction ($nonce, $gasPrice, $gasLimit, $to, $amount,$data); $rawTx = $transaction->getRaw($_POST['privkey'], $_POST['chain']); $txHash = Keccak::hash(hex2bin($rawTx), 256); ?> <div class="alert alert-success"> <h6 class="mt-3">Final TX Hex</h6> <textarea class="form-control" rows="5" id="comment" readonly><?php echo $rawTx;?></textarea> <p> <?php if ($_POST['chain'] == "1") { ?> * <a href="https://etherscan.io/pushTx" target="_blank">https://etherscan.io/pushTx</a> <?php } else { ?> * <a href="https://ropsten.etherscan.io/pushTx" target="_blank">https://ropsten.etherscan.io/pushTx</a> <?php } ?> </p> <h6 class="mt-3">Data (Hex)</h6> <textarea class="form-control" rows="5" id="comment" readonly><?php echo $data;?></textarea> <h6 class="mt-3">TX Hash</h6> <input class="form-control" readonly value="<?php echo $txHash?>"/> </div> <?php } catch (Exception $e) { $errmsg .= "Problem found. " . $e->getMessage(); } } if ($errmsg) { ?> <div class="alert alert-danger"> <strong>Error!</strong> <?php echo $errmsg?> </div> <?php } ?> <form action='' method='post'> <div class="form-group"> <label for="chain">Chain:</label> <select id="chain" name="chain" class="form-control" > <?php foreach($supportChains as $k=>$v) { echo "<option value='{$k}'".($k == $_POST['chain'] ? " selected": "").">{$v}</option>"; } ?> </select> </div> <div class="form-group"> <label for="nonce">Nonce:</label> <input class="form-control" type='text' name='nonce' id='nonce' value='<?php echo $_POST['nonce']?>'> <small> Learn more <a href='eth_tx_nonce.php' target='_blank'>here</a>. </small> </div> <div class="form-group"> <label for="gas_price">Gas Price:</label> <div class="input-group mb-3"> <input class="form-control" type='text' name='gas_price' id='gas_price' value='<?php echo $_POST['gas_price']?>'> <div class="input-group-append"> <span class="input-group-text">GWEI</span> </div> </div> </div> <div class="form-group"> <label for="gas_limit">Gas Limit:</label> <input class="form-control" type='text' name='gas_limit' id='gas_limit' value='<?php echo $_POST['gas_limit']?>'> </div> <div class="form-group"> <label for="contract_addr">To:</label> <input placeholder="Token's Contract Address" class="form-control" type='text' name='contract_addr' id='contract_addr' value='<?php echo $_POST['contract_addr']?>'> </div> <div class="form-group"> <label for="token_amount">Send Token Amount:</label> <input class="form-control" type='text' name='token_amount' id='token_amount' value='<?php echo $_POST['token_amount']?>'> </div> <div class="form-group"> <label for="token_decimals">Token Decimal Places:</label> <input class="form-control" type='text' name='token_decimals' id='token_decimals' value='<?php echo $_POST['token_decimals']?>'> </div> <div class="form-group"> <label for="recipient">Recipient:</label> <input class="form-control" type='text' name='recipient' id='recipient' value='<?php echo $_POST['recipient']?>'> </div> <div class="form-group"> <label for="privkey">From:</label> <input placeholder="Sender's Private Key (Hex)" class="form-control" type='text' name='privkey' id='privkey' value='<?php echo $_POST['privkey']?>'> </div> <input type='submit' class="btn btn-success btn-block"/> </form> <?php include_once("html_iframe_footer.php");