Generate serialized raw tx by signing raw data.
<?php
use IEXBase\TronAPI\Tron;
use IEXBase\TronAPI\Support;
use Protocol\Transaction\Contract\ContractType;
include_once "../libraries/vendor/autoload.php";
include_once("html_iframe_header.php");
include_once("tron_utils.php");
//include all php files that generated by protoc
$dir = new RecursiveDirectoryIterator('protobuf/core/');
$iter = new RecursiveIteratorIterator($dir);
$files = new RegexIterator($iter, '/^.+\.php$/', RecursiveRegexIterator::GET_MATCH); // an Iterator, not an array
foreach ( $files as $file ) {
if (is_array($file)) {
foreach($file as $filename) {
include $filename;
}
} else {
include $file;
}
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
try {
$tx = new \Protocol\Transaction();
$parsedRaw = new \Protocol\Transaction\Raw();
$parsedRaw->mergeFromString(hex2str($_POST['raw_data']));
$txId = hash("sha256", $parsedRaw->serializeToString());
$tx->setRawData($parsedRaw);
$signature = Support\Secp::sign($txId, $_POST['privkey']);
$tx->setSignature([hex2str( $signature )]);
?>
<div class="alert alert-success">
<h6 class="mt-3">Raw Tx Hex</h6>
<textarea class="form-control" rows="5" id="comment" readonly><?php echo str2hex($tx->serializeToString());?></textarea>
<h6 class="mt-3">Tx Byte Size</h6>
<input class="form-control" rows="5" id="comment" readonly value="<?php echo $tx->byteSize();?>"></textarea>
<h6 class="mt-3">Consume Bandwidth</h6>
<input class="form-control" rows="5" id="comment" readonly value="<?php echo $tx->byteSize() + 64;?>"></textarea>
<h6 class="mt-3">Tx Id</h6>
<input class="form-control" rows="5" id="comment" readonly value="<?php echo $txId;?>"></textarea>
</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="raw_data">Raw Data Hex:</label>
<input class="form-control" type='text' name='raw_data' id='raw_data' value='<?php echo $_POST['raw_data']?>'>
</div>
<div class="form-group">
<label for="privkey">Private Key:</label>
<input 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");