diff --git a/index.html b/index.html index df9422f..81f64c8 100644 --- a/index.html +++ b/index.html @@ -5,8 +5,8 @@ Bitcoin Wallet by Coinb.in - - + + diff --git a/js/coin.js b/js/coin.js index 20294f5..054f3ab 100644 --- a/js/coin.js +++ b/js/coin.js @@ -876,7 +876,7 @@ } /* add unspent to transaction */ - r.addUnspent = function(address, callback, script){ + r.addUnspent = function(address, callback, script, segwit){ var self = this; this.listUnspent(address, function(data){ var s = coinjs.script(); @@ -902,8 +902,18 @@ var n = u.getElementsByTagName("tx_output_n")[0].childNodes[0].nodeValue; var scr = script || u.getElementsByTagName("script")[0].childNodes[0].nodeValue; - self.addinput(txhash, n, scr); + if(segwit){ + /* this is a small hack to include the value with the redeemscript to make the signing procedure smoother. + It is not standard and removed during the signing procedure. */ + s = coinjs.script(); + s.writeBytes(Crypto.util.hexToBytes(script)); + s.writeOp(0); + s.writeBytes(coinjs.numToBytes(u.getElementsByTagName("value")[0].childNodes[0].nodeValue*1, 8)); + scr = Crypto.util.bytesToHex(s.buffer); + } + + self.addinput(txhash, n, scr); value += u.getElementsByTagName("value")[0].childNodes[0].nodeValue*1; total++; } diff --git a/js/coinbin.js b/js/coinbin.js index 597fe41..5238998 100644 --- a/js/coinbin.js +++ b/js/coinbin.js @@ -124,7 +124,7 @@ $(document).ready(function() { var script = false; if($("#walletSegwit").is(":checked")){ var sw = coinjs.segwitAddress($("#walletKeys .pubkey").val()); - scrip = sw.redeemscript; + script = sw.redeemscript; } tx.addUnspent($("#walletAddress").html(), function(data){ @@ -148,7 +148,7 @@ $(document).ready(function() { // and finally broadcast! tx2.broadcast(function(data){ if($(data).find("result").text()=="1"){ - $("#walletSendConfirmStatus").removeClass('hidden').addClass('alert-success').html("txid: "+$(data).find("txid").text()); + $("#walletSendConfirmStatus").removeClass('hidden').addClass('alert-success').html('txid: '+$(data).find("txid").text()+''); } else { $("#walletSendConfirmStatus").removeClass('hidden').addClass('alert-danger').html(unescape($(data).find("response").text()).replace(/\+/g,' ')); $("#walletSendFailTransaction").removeClass('hidden'); @@ -167,7 +167,7 @@ $(document).ready(function() { $("#walletLoader").addClass("hidden"); - }, script); + }, script, script); }); $("#walletSendBtn").click(function(){ @@ -1262,7 +1262,6 @@ $(document).ready(function() { var tx = coinjs.transaction(); try { var decode = tx.deserialize($("#verifyScript").val()); - // console.log(decode); $("#verifyTransactionData .transactionVersion").html(decode['version']); $("#verifyTransactionData .transactionSize").html(decode.size()+' bytes'); $("#verifyTransactionData .transactionLockTime").html(decode['lock_time']); diff --git a/sha1sum b/sha1sum index a45746c..62a5f36 100644 --- a/sha1sum +++ b/sha1sum @@ -1,9 +1,9 @@ ----- Version 1.3 2017.09.16 ---- +---- Version 1.3 2017.09.20 ---- 77e4519962e2f6a9fc93342137dbb31c33b76b04 ./js/aes.js 3a09a8fc0cfe828b57fc798d668234d0490ee1a6 ./js/bootstrap-datetimepicker.min.js 253711c6d825de55a8360552573be950da180614 ./js/bootstrap.min.js -618db47822494e730a8fa93cfab985332872b93e ./js/coinbin.js -b2b1b00455dd2d1f168dc68b6efdbb1de817b5d0 ./js/coin.js +3ac0e33ea28610e6f784658efcd88802bdd18119 ./js/coinbin.js +466bd554f3466c477cd13bb355a4df343749b8b9 ./js/coin.js 988565bc2cb402d63ed5c5fd7ff47c4278efc2c5 ./js/collapse.js 9ba5ede3d7f9d4c8fd623395f196adfdcf7e970f ./js/crypto-min.js f7c09f2f5a721371e7d478050119f7e2d58e3ef9 ./js/crypto-sha256-hmac.js @@ -30,4 +30,4 @@ de51a8494180a6db074af2dee2383f0a363c5b08 ./fonts/glyphicons-halflings-regular.s 278e49a86e634da6f2a02f3b47dd9d2a8f26210f ./fonts/glyphicons-halflings-regular.woff 44bc1850f570972267b169ae18f1cb06b611ffa2 ./fonts/glyphicons-halflings-regular.ttf d8a324a13501cd5705dc26b945fc8088f00907ae ./README.md -cc101e4b9718116bb767f7cbd04cab816ca32b66 ./index.html +45bb7cbfe003039b3e527ecc38a18786de55a843 ./index.html