OSDN Git Service

add kit-gm.html
authorChengcheng Zhang <943420582@qq.com>
Wed, 20 Feb 2019 07:18:35 +0000 (15:18 +0800)
committerChengcheng Zhang <943420582@qq.com>
Wed, 20 Feb 2019 07:18:35 +0000 (15:18 +0800)
app/__init__.py
assets/main_gm.js [new file with mode: 0644]
kit-gm.html [new file with mode: 0644]
requirements.txt

index fed1418..506db15 100644 (file)
@@ -1,6 +1,7 @@
 from flask import Flask
 from app import api
 from app.config import config
+from flask_cors import CORS
 # from app.extensions import db
 
 
@@ -9,6 +10,7 @@ def create_app(config_name=None):
     """
     app = Flask('app')
 
+    CORS(app)
     configure_app(app, config_name)
     configure_extensions(app)
     register_blueprints(app)
diff --git a/assets/main_gm.js b/assets/main_gm.js
new file mode 100644 (file)
index 0000000..6323fd8
--- /dev/null
@@ -0,0 +1,187 @@
+$(function(){
+  // 生成新熵
+  $('#btnCreateNewKey').click(function(){
+    console.log('创建新密钥');
+    $.ajax({
+      method: 'post',  //get or post
+      url: 'http://127.0.0.1:5000/api/v1/get_gm_new_key',
+      data: {},
+      dataType: 'json',
+    }).done(function(data){
+      console.log(data);
+      layer.msg('创建成功')
+      $('#txtEntropy').val(data.entropy)
+      $('#txtMnemonics').val(data.mnemonic)
+      $('#txtSeed').val(data.seed)
+      $('#txtRootXprv').val(data.xprv)
+      $('#txtRootXpub').val(data.xpub)
+      $('#imgXprvQRCode').attr('src', 'data:image/jpg;base64,' + data.xprv_base64)
+    }).fail(function(err){
+      layer.alert('创建失败' + err);
+    });
+  })
+  // 清除熵
+  $('#btnResetKey').click(function(){
+    console.log('清除');
+    $('#txtEntropy').val('')
+    $('#txtMnemonics').val('')
+    $('#txtSeed').val('')
+    $('#txtRootXprv').val('')
+    $('#txtRootXpub').val('')
+    $('#imgXprvQRCode').attr('src', 'data:image/jpg;base64,')
+  })
+  // 生成新地址
+  $('#btnCreateNewAddress').click(function(){
+    console.log('创建新地址');
+    var xpub_str = $('#txtXpub').val()
+    var account_index_int = $('#txtAccountIndex').val()
+    var address_index_int = $('#txtAddressIndex').val()
+    var change_bool = false
+    if ($("input[name='inlineRadioOptionsChange']:checked").val() == "true") {
+      change_bool = true
+    }
+    var network_str = $("input[name='inlineRadioOptionsNetwork']:checked").val()
+    $.ajax({
+      method: 'post',  //get or post
+      url: 'http://kit.blockmeta.com/api/v1/create_new_address',
+      data: {
+        "xpub_str": xpub_str,
+        "account_index_int": account_index_int,
+        "address_index_int": address_index_int,
+        "change_bool": change_bool,
+        "network_str": network_str
+      },
+      dataType: 'json',
+    }).done(function(data){
+      console.log(data);
+      layer.msg('创建成功')
+      $('#txtAddressPath').val(data.path)
+      $('#txtControlProgram').val(data.control_program)
+      $('#txtAddress').val(data.address)
+      $('#imgAddressQRCode').attr('src', 'data:image/jpg;base64,' + data.address_base64)
+    }).fail(function(err){
+      layer.alert('创建失败' + err);
+    });
+  })
+  // 清除地址
+  $('#btnResetAddress').click(function(){
+    console.log('清除');
+    $('#txtXpub').val('')
+    $('#txtAccountIndex').val('1')
+    $('#txtAddressIndex').val('1')
+    $('#txtAddressPath').val('')
+    $('#txtControlProgram').val('')
+    $('#txtAddress').val('')
+    $('#imgAddressQRCode').attr('src', 'data:image/jpg;base64,')
+  })
+  // 消息签名
+  $('#btnSignMessage').click(function(){
+    console.log('创建新签名');
+    var xprv_str = $('#txtXprv').val()
+    var message_str = $('#txtMessage').val()
+    $.ajax({
+      method: 'post',  //get or post
+      url: 'http://kit.blockmeta.com/api/v1/xprv_sign',
+      data: {
+        "xprv_str": xprv_str,
+        "message_str": message_str
+      },
+      dataType: 'json',
+    }).done(function(data){
+      console.log(data);
+      layer.msg('签名成功')
+      $('#txtSignature').val(data.signature)
+    }).fail(function(err){
+      layer.alert('签名失败' + err);
+    });
+  })
+  // 清除消息签名
+  $('#btnResetSign').click(function(){
+    console.log('清除');
+    $('#txtXprv').val('')
+    $('#txtMessage').val('')
+    $('#txtSignature').val('')
+  })
+  // 验证签名
+  $('#btnVerifySignature').click(function(){
+    console.log('验证签名');
+    var xpub_str = $('#txtXpubVerify').val()
+    var message_str = $('#txtMessageVerify').val()
+    var signature_str = $('#txtSignatureVerify').val()
+    $.ajax({
+      method: 'post',  //get or post
+      url: 'http://kit.blockmeta.com/api/v1/xpub_verify',
+      data: {
+        "xpub_str": xpub_str,
+        "message_str": message_str,
+        "signature_str": signature_str
+      },
+      dataType: 'json',
+    }).done(function(data){
+      console.log(data);
+      layer.msg('验证成功')
+      $('#txtVerifyResult').val(data.result)
+    }).fail(function(err){
+      layer.alert('验证失败,请检查输入数据格式是否正确' + err);
+    });
+  })
+  // 清除消息签名
+  $('#btnResetVerify').click(function(){
+    console.log('清除');
+    $('#txtXpubVerify').val('')
+    $('#txtMessageVerify').val('')
+    $('#txtSignatureVerify').val('')
+    $('#txtVerifyResult').val('')
+  })
+  // 发送交易
+  $('#btnSubmitTransaction').click(function(){
+    console.log('验证签名');
+    var raw_transaction_str = $('#txtRawTransaction').val()
+    var network_str = $("input[name='inlineRadioOptionsNetworkSubmitTx']:checked").val()
+    $.ajax({
+      method: 'post',  //get or post
+      url: 'http://kit.blockmeta.com/api/v1/submit_transaction',
+      data: {
+        "raw_transaction_str": raw_transaction_str,
+        "network_str": network_str
+      },
+      dataType: 'json',
+    }).done(function(data){
+      console.log(data);
+      layer.msg('发送成功')
+      $('#txtRawTransaction').val('')
+    }).fail(function(err){
+      layer.alert('发送失败,请检查输入数据格式是否正确' + err);
+    });
+  })
+  // 清除发送交易
+  $('#btnResetSubmitTransaction').click(function(){
+    console.log('清除');
+    $('#txtRawTransaction').val('')
+  })
+  // 解码原生交易信息
+  $('#btnDocodeRawTransaction').click(function(){
+    console.log('解码交易');
+    var raw_transaction_str = $('#txtRawHexTransaction').val()
+    $.ajax({
+      method: 'post',  //get or post
+      url: 'http://kit.blockmeta.com/api/v1/decode_raw_transaction',
+      data: {
+        "raw_transaction_str": raw_transaction_str
+      },
+      dataType: 'json',
+    }).done(function(data){
+      console.log(data);
+      layer.msg('解码成功')
+      $('#txtJsonTransaction').val(data.response)
+    }).fail(function(err){
+      layer.alert('解码失败,请检查输入数据格式是否正确' + err);
+    });
+  })
+  // 清除解码交易
+  $('#btnResetDecodeRawTransaction').click(function(){
+    console.log('清除');
+    $('#txtRawHexTransaction').val('')
+    $('#txtJsonTransaction').val('')
+  })
+});
diff --git a/kit-gm.html b/kit-gm.html
new file mode 100644 (file)
index 0000000..89d1a99
--- /dev/null
@@ -0,0 +1,363 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <meta http-equiv="X-UA-Compatible" content="ie=edge">
+  <title>Bytom Kit</title>
+  <link rel="stylesheet" href="./node_modules/bootstrap/dist/css/bootstrap.min.css">
+  <link rel="stylesheet" href="./assets/main.css">
+  <script src="./node_modules/jquery/dist/jquery.min.js"></script>
+  <script src="./node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
+  <script src="./node_modules/layer/layer.js"></script>
+  <script src="./assets/main_gm.js"></script>
+</head>
+
+<body>
+  <nav class="navbar navbar-default">
+    <div class="nav-wrap">
+      <div class="navbar-header">
+        <a href="#" class="navbar-brand">Bytom Kit GM</a>
+      </div>
+      <ul class="nav navbar-nav">
+        <li role="presentation" class="active"><a data-toggle="tab" href="#key">Key</a></li>
+        <li role="presentation"><a data-toggle="tab" href="#address">Address</a></li>
+        <li role="presentation"><a data-toggle="tab" href="#sign">Sign</a></li>
+        <li role="presentation"><a data-toggle="tab" href="#verify">Verify</a></li>
+        <li role="presentation"><a data-toggle="tab" href="#submit">Submit Transaction</a></li>
+        <li role="presentation"><a data-toggle="tab" href="#decode">Decode Raw Transaction</a></li>
+      </ul>
+    </div>
+  </nav>
+  <div class="tab-content">
+    <div class="tab-pane active" id="key">
+      <div class="panel panel-default sc-bd">
+        <div class="panel-heading">
+          <h3 class="panel-title">Key </h3>
+        </div>
+        <div class="panel-body">
+          <form class="form-horizontal">
+            <!-- 熵 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Entropy</label>
+              <div class="col-sm-10">
+                <input type="text" class="form-control" id="txtEntropy" placeholder="16 Bytes entropy, e.g. 9f57b7c2981614d15b82d5ad2433cbeb"
+                  readonly>
+              </div>
+            </div>
+            <!-- 助记词 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Mnemonics</label>
+              <div class="col-sm-10">
+                <input type="text" class="form-control" id="txtMnemonics" placeholder="12 mnemonics, e.g. palm sad vague coral genuine hamster host follow pudding canoe very strike"
+                  readonly>
+              </div>
+            </div>
+            <!-- 种子 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Seed</label>
+              <div class="col-sm-10">
+                <input type="text" class="form-control" id="txtSeed" placeholder="64 Bytes seed, e.g. 6abe43bc9f6a2d066f4f566f15bfb6c14a768bfd87bd31ab0cb30df45a7afa650906983fe03a44ba54738b9d05e0f3ee0718f251818c45b8e094d3d7a24ad5c0"
+                  readonly>
+              </div>
+            </div>
+            <!-- 根扩展私钥 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Root Expanded Private Key</label>
+              <div class="col-sm-10">
+                <input type="text" class="form-control" id="txtRootXprv" placeholder="64 Bytes root expanded private key, e.g. 3a52f1c955d1f4fa4d4908da226f200dbcc5b1674d6995ad0757da227ea269b38635bd6c1ca20a571b4f73416488610df9c51484e83127a98690536a0ff6e658"
+                  readonly>
+              </div>
+            </div>
+            <!-- 根扩展公钥 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Root Expanded Public Key</label>
+              <div class="col-sm-10">
+                <input type="text" class="form-control" id="txtRootXpub" placeholder="65 Bytes root expanded public key, e.g. 03af1ae23d21b576c69f3066508ed27a8ebe62a7a3b283dae160205dce37f94d8a8635bd6c1ca20a571b4f73416488610df9c51484e83127a98690536a0ff6e658"
+                  readonly>
+              </div>
+            </div>
+            <!-- 根扩展私钥二维码 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Xprv QR Code</label>
+              <img id="imgXprvQRCode" width="200" src="" alt="">
+            </div>
+            <div class="form-group">
+              <div class="col-sm-offset-2 col-sm-10">
+                <a id="btnCreateNewKey" class="btn btn-primary">Create New Key</a>
+                <a id="btnResetKey" class="btn btn-primary">Reset</a>
+              </div>
+            </div>
+          </form>
+        </div>
+      </div>
+    </div>
+    <div class="tab-pane" id="address">
+      <div class="panel panel-default sc-bd">
+        <div class="panel-heading">
+          <h3 class="panel-title">Address </h3>
+        </div>
+        <div class="panel-body">
+          <form class="form-horizontal">
+            <!-- 根扩展公钥 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Expanded Public Key</label>
+              <div class="col-sm-10">
+                <input type="text" class="form-control" id="txtXpub" placeholder="64 Bytes expanded public key, e.g. 8fde12d7c9d6b6cbfbf344edd42f2ed86ae6270b36bab714af5fd5bb3b54adcec4265f1de85ece50f17534e42016ee9404a11fec94ddfadd4a064d27ef3f3f4c"
+                  maxlength="128">
+              </div>
+            </div>
+            <!-- 账户索引 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Account Index</label>
+              <div class="col-sm-10">
+                <input type="text" class="form-control" id="txtAccountIndex" placeholder="Account Index, e.g. 1, 2, 3..."
+                  value="1">
+              </div>
+            </div>
+            <!-- 地址索引 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Address Index</label>
+              <div class="col-sm-10">
+                <input type="text" class="form-control" id="txtAddressIndex" placeholder="Address Index, e.g. 1, 2, 3..."
+                  value="1">
+              </div>
+            </div>
+            <!-- 找零 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Change</label>
+              <div class="col-sm-10">
+                <label class="radio-inline">
+                  <input type="radio" name="inlineRadioOptionsChange" id="inlineRadioChangeTrue" value="true"> True
+                </label>
+                <label class="radio-inline">
+                  <input type="radio" name="inlineRadioOptionsChange" id="inlineRadioChangeFalse" value="false" checked="checked">
+                  False
+                </label>
+              </div>
+            </div>
+            <!-- 网络 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Network</label>
+              <div class="col-sm-10">
+                <label class="radio-inline">
+                  <input type="radio" name="inlineRadioOptionsNetwork" id="inlineRadioMainet" value="mainnet"> Mainnet
+                </label>
+                <label class="radio-inline">
+                  <input type="radio" name="inlineRadioOptionsNetwork" id="inlineRadioTestnet" value="testnet"> Testnet
+                </label>
+                <label class="radio-inline">
+                  <input type="radio" name="inlineRadioOptionsNetwork" id="inlineRadioSolonet" value="solonet" checked="checked">
+                  Solonet
+                </label>
+              </div>
+            </div>
+            <!-- 地址路径 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Address Path</label>
+              <div class="col-sm-10">
+                <input type="text" class="form-control" id="txtAddressPath" placeholder="Address Path, e.g. m/44/153/1/0/1"
+                  readonly>
+              </div>
+            </div>
+            <!-- control program -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Control Program</label>
+              <div class="col-sm-10">
+                <input type="text" class="form-control" id="txtControlProgram" placeholder="Control Program, e.g. 00147640f3c34fe4b2b298e54e54a4692a47ce47aa5e"
+                  readonly>
+              </div>
+            </div>
+            <!-- 地址 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Address</label>
+              <div class="col-sm-10">
+                <input type="text" class="form-control" id="txtAddress" placeholder="Address, e.g. sm1qweq08s60ujet9x89fe22g6f2gl8y02j7lgr5v5"
+                  readonly>
+              </div>
+            </div>
+            <!-- 根扩展私钥二维码 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Address QR Code</label>
+              <img id="imgAddressQRCode" width="200" src="" alt="">
+            </div>
+            <div class="form-group">
+              <div class="col-sm-offset-2 col-sm-10">
+                <a id="btnCreateNewAddress" class="btn btn-primary">Create New Address</a>
+                <a id="btnResetAddress" class="btn btn-primary">Reset</a>
+              </div>
+            </div>
+          </form>
+        </div>
+      </div>
+    </div>
+    <div class="tab-pane" id="sign">
+      <div class="panel panel-default sc-bd">
+        <div class="panel-heading">
+          <h3 class="panel-title">Sign </h3>
+        </div>
+        <div class="panel-body">
+          <form class="form-horizontal">
+            <!-- 扩展私钥 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Expanded Private Key</label>
+              <div class="col-sm-10">
+                <input type="text" class="form-control" id="txtXprv" placeholder="64 Bytes expanded private key, e.g. c003f4bcccf9ad6f05ad2c84fa5ff98430eb8e73de5de232bc29334c7d074759d513bc370335cac51d77f0be5dfe84de024cfee562530b4d873b5f5e2ff4f57c"
+                  maxlength="128">
+              </div>
+            </div>
+            <!-- 消息 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Message</label>
+              <div class="col-sm-10">
+                <input type="text" class="form-control" id="txtMessage" placeholder="Message, e.g. a6ce34eec332b32e42ef3407e052d64ac625da6f"
+                  maxlength="10000">
+              </div>
+            </div>
+            <!-- 签名 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Signature</label>
+              <div class="col-sm-10">
+                <input type="text" class="form-control" id="txtSignature" placeholder="Signature, e.g. f02f5bb22d8b32f14e88059a786379c26256892f45cf64770c844d0c5de2e52c00307b7bb25fcbb18be13c339a2f511a7c015a8cf81ac681052efe8e50eff00e"
+                  readonly>
+              </div>
+            </div>
+            <div class="form-group">
+              <div class="col-sm-offset-2 col-sm-10">
+                <a id="btnSignMessage" class="btn btn-primary">Sign Message</a>
+                <a id="btnResetSign" class="btn btn-primary">Reset</a>
+              </div>
+            </div>
+          </form>
+        </div>
+      </div>
+    </div>
+    <div class="tab-pane" id="verify">
+      <div class="panel panel-default sc-bd">
+        <div class="panel-heading">
+          <h3 class="panel-title">Verify </h3>
+        </div>
+        <div class="panel-body">
+          <form class="form-horizontal">
+            <!-- 扩展公钥 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Expanded Public Key</label>
+              <div class="col-sm-10">
+                <input type="text" class="form-control" id="txtXpubVerify" placeholder="64 Bytes expanded public key, e.g. 1b0541a7664cee929edb54d9ef21996b90546918a920a77e1cd6015d97c56563d513bc370335cac51d77f0be5dfe84de024cfee562530b4d873b5f5e2ff4f57c"
+                  maxlength="128">
+              </div>
+            </div>
+            <!-- 消息 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Message</label>
+              <div class="col-sm-10">
+                <input type="text" class="form-control" id="txtMessageVerify" placeholder="Message, e.g. a6ce34eec332b32e42ef3407e052d64ac625da6f"
+                  maxlength="10000">
+              </div>
+            </div>
+            <!-- 签名 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Signature</label>
+              <div class="col-sm-10">
+                <input type="text" class="form-control" id="txtSignatureVerify" placeholder="Signature, e.g. f02f5bb22d8b32f14e88059a786379c26256892f45cf64770c844d0c5de2e52c00307b7bb25fcbb18be13c339a2f511a7c015a8cf81ac681052efe8e50eff00e"
+                  maxlength="128">
+              </div>
+            </div>
+            <!-- 验证结果 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Verify Result</label>
+              <div class="col-sm-10">
+                <input type="text" class="form-control" id="txtVerifyResult" placeholder="Verify Result, True or False"
+                  readonly>
+              </div>
+            </div>
+            <div class="form-group">
+              <div class="col-sm-offset-2 col-sm-10">
+                <a id="btnVerifySignature" class="btn btn-primary">Verify Signature</a>
+                <a id="btnResetVerify" class="btn btn-primary">Reset</a>
+              </div>
+            </div>
+          </form>
+        </div>
+      </div>
+    </div>
+    <div class="tab-pane" id="submit">
+      <div class="panel panel-default sc-bd">
+        <div class="panel-heading">
+          <h3 class="panel-title">Submit Transaction </h3>
+        </div>
+        <div class="panel-body">
+          <form class="form-horizontal">
+            <!-- 签名好的交易信息 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Raw Transaction</label>
+              <div class="col-sm-10">
+                <input type="text" class="form-control" id="txtRawTransaction" placeholder="Raw Transaction, e.g. 070100010160015e0873eddd68c4ba07c9410984799928288ae771bdccc6d974e72c95727813461fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8094ebdc030101160014052620b86a6d5e07311d5019dffa3864ccc8a6bd630240312a052f36efb9826aa1021ec91bc6f125dd07f9c4bff87014612069527e15246518806b654d57fff8b6fe91866a19d5a2fb63a5894335fce92a7b4a7fcd340720e87ca3acdebdcad9a1d0f2caecf8ce0dbfc73d060807a210c6f225488347961402013dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8082eee0020116001418028ef4f8b8c278907864a1977a5ee6707b2a6b00013cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80b8b872011600142935e4869d0317d9701c80a02ecf888143cb9dd200"
+                  maxlength="100000">
+              </div>
+            </div>
+            <!-- 网络 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Network</label>
+              <div class="col-sm-10">
+                <label class="radio-inline">
+                  <input type="radio" name="inlineRadioOptionsNetworkSubmitTx" id="inlineRadioMainetSubmitTx" value="mainnet">
+                  Mainnet
+                </label>
+                <label class="radio-inline">
+                  <input type="radio" name="inlineRadioOptionsNetworkSubmitTx" id="inlineRadioTestnetSubmitTx" value="testnet"
+                    checked="checked"> Testnet
+                </label>
+              </div>
+            </div>
+            <div class="form-group">
+              <div class="col-sm-offset-2 col-sm-10">
+                <a id="btnSubmitTransaction" class="btn btn-primary">Submit Transaction</a>
+                <a id="btnResetSubmitTransaction" class="btn btn-primary">Reset</a>
+              </div>
+            </div>
+          </form>
+        </div>
+      </div>
+    </div>
+    <div class="tab-pane" id="decode">
+      <div class="panel panel-default sc-bd">
+        <div class="panel-heading">
+          <h3 class="panel-title">Decode Raw Transaction </h3>
+        </div>
+        <div class="panel-body">
+          <form class="form-horizontal">
+            <!-- 签名好的交易信息 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">Raw Transaction</label>
+              <div class="col-sm-10">
+                <input type="text" class="form-control" id="txtRawHexTransaction" placeholder="Raw Hex Transaction, e.g. 070100010161015f28b7b53d8dc90006bf97e0a4eaae2a72ec3d869873188698b694beaf20789f21ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8099c4d5990100011600149335b1cbd4a77b78e33315a0ed10a95b12e7ca48630240897e2d9d24a3b5faaed0579dee7597b401491595675f897504f8945b29d836235bd2fca72a3ad0cae814628973ebcd142d9d6cc92d0b2571b69e5370a98a340c208cb7fb3086f58db9a31401b99e8c658be66134fb9034de1d5c462679270b090702013effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f9f8bc98010116001406ce4b689ba026ffd3a7ca65d1d059546d4b78a000013dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80c6868f01011600147929ef91997c827bebf60fa608f876ea27523c4700"
+                  maxlength="100000">
+              </div>
+            </div>
+            <!-- json格式交易 -->
+            <div class="form-group">
+              <label class="col-sm-2 control-label">JSON Format</label>
+              <div class="col-sm-10">
+                <input type="text" class="form-control" id="txtJsonTransaction" placeholder="JSON Format Transaction"
+                  maxlength="100000" readonly>
+              </div>
+            </div>
+            <div class="form-group">
+              <div class="col-sm-offset-2 col-sm-10">
+                <a id="btnDocodeRawTransaction" class="btn btn-primary">Decode Transaction</a>
+                <a id="btnResetDecodeRawTransaction" class="btn btn-primary">Reset</a>
+              </div>
+            </div>
+          </form>
+        </div>
+      </div>
+    </div>
+  </div>
+  <div class="cp">
+    <p>Copyright ©️ <a href="https://blockmeta.com">Blockmeta.com</a></p>
+  </div>
+</body>
+
+</html>
\ No newline at end of file
index 75c06e4..bd6df99 100644 (file)
@@ -8,6 +8,7 @@ Click==7.0
 Django==2.1.5
 ed25519==1.4
 Flask==1.0.2
+Flask-Cors==3.0.7
 Flask-RESTful==0.3.7
 flask-restplus==0.12.1
 gevent==1.3.6