From 276c654852c43c953183e93e73b8dd4bcd00fb7f Mon Sep 17 00:00:00 2001 From: jl777 Date: Fri, 17 Aug 2018 23:40:12 -1100 Subject: [PATCH 01/15] -s --- src/cc/rewards.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cc/rewards.cpp b/src/cc/rewards.cpp index 5bb7fec1b..efb47fdb3 100644 --- a/src/cc/rewards.cpp +++ b/src/cc/rewards.cpp @@ -644,7 +644,7 @@ std::string RewardsUnlock(uint64_t txfee,char *planstr,uint256 fundingtxid,uint2 { mtx.vout.push_back(CTxOut(amount-txfee,scriptPubKey)); //CCerror = "cant find enough rewards inputs"; - fprintf(stderr,"not enough rewards funds to payout %.8f, recover mode tx\n",(double)(rewards+txfee)/COIN); + fprintf(stderr,"not enough rewards funds to payout %.8f, recover mode tx\n",(double)(reward+txfee)/COIN); return(FinalizeCCTx(-1LL,cp,mtx,mypk,txfee,opret)); } } From 9c5c9f0b9d7667630a1ff9079594bc868a5f8d2d Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 18 Aug 2018 00:11:27 -1100 Subject: [PATCH 02/15] +prints --- src/cc/CCutils.cpp | 2 +- src/cc/eval.cpp | 2 +- src/cryptoconditions/src/internal.h | 2 +- src/cryptoconditions/src/utils.c | 1 + 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/cc/CCutils.cpp b/src/cc/CCutils.cpp index 8cb06ab25..785e9d952 100644 --- a/src/cc/CCutils.cpp +++ b/src/cc/CCutils.cpp @@ -260,7 +260,7 @@ bool ProcessCC(struct CCcontract_info *cp,Eval* eval, std::vector param //txid = ctx.GetHash(); //if ( txid == cp->prevtxid ) // return(true); - //fprintf(stderr,"process CC %02x\n",cp->evalcode); + fprintf(stderr,"process CC %02x\n",cp->evalcode); if ( paramsNull.size() != 0 ) // Don't expect params return eval->Invalid("Cannot have params"); else if ( ctx.vout.size() == 0 ) diff --git a/src/cc/eval.cpp b/src/cc/eval.cpp index 95f5c33de..949728be4 100644 --- a/src/cc/eval.cpp +++ b/src/cc/eval.cpp @@ -38,7 +38,7 @@ bool RunCCEval(const CC *cond, const CTransaction &tx, unsigned int nIn) pthread_mutex_lock(&KOMODO_CC_mutex); bool out = eval->Dispatch(cond, tx, nIn); pthread_mutex_unlock(&KOMODO_CC_mutex); - //fprintf(stderr,"out %d vs %d isValid\n",(int32_t)out,(int32_t)eval->state.IsValid()); + fprintf(stderr,"out %d vs %d isValid\n",(int32_t)out,(int32_t)eval->state.IsValid()); assert(eval->state.IsValid() == out); if (eval->state.IsValid()) return true; diff --git a/src/cryptoconditions/src/internal.h b/src/cryptoconditions/src/internal.h index 5a9da13c0..8082f9b75 100644 --- a/src/cryptoconditions/src/internal.h +++ b/src/cryptoconditions/src/internal.h @@ -56,7 +56,7 @@ typedef struct CCType { /* * Globals */ -extern struct CCType *CCTypeRegistry[16]; +extern struct CCType *CCTypeRegistry[]; extern int CCTypeRegistryLength; diff --git a/src/cryptoconditions/src/utils.c b/src/cryptoconditions/src/utils.c index c98c6d17d..25783ddfc 100644 --- a/src/cryptoconditions/src/utils.c +++ b/src/cryptoconditions/src/utils.c @@ -137,6 +137,7 @@ unsigned char *base64_decode(const unsigned char *data_, void base64_cleanup() { free(decoding_table); + decoding_table = 0; } From 007cc1f99686876edf97c481135836a20b690016 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 18 Aug 2018 00:33:08 -1100 Subject: [PATCH 03/15] Remove trailing / in depends --- depends/packages/googletest.mk | 2 +- depends/packages/libevent.mk | 2 +- depends/packages/libgmp.mk | 4 ++-- depends/packages/librustzcash.mk | 2 +- depends/packages/libsodium.mk | 2 +- depends/packages/zeromq.mk | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/depends/packages/googletest.mk b/depends/packages/googletest.mk index 1275593f5..409c83a1b 100644 --- a/depends/packages/googletest.mk +++ b/depends/packages/googletest.mk @@ -1,6 +1,6 @@ package=googletest $(package)_version=1.8.0 -$(package)_download_path=https://github.com/google/$(package)/archive/ +$(package)_download_path=https://github.com/google/$(package)/archive $(package)_file_name=$(package)-$($(package)_version).tar.gz $(package)_download_file=release-$($(package)_version).tar.gz $(package)_sha256_hash=58a6f4277ca2bc8565222b3bbd58a177609e9c488e8a72649359ba51450db7d8 diff --git a/depends/packages/libevent.mk b/depends/packages/libevent.mk index 2a1125fda..ffe6f7e79 100644 --- a/depends/packages/libevent.mk +++ b/depends/packages/libevent.mk @@ -1,6 +1,6 @@ package=libevent $(package)_version=2.1.8 -$(package)_download_path=https://github.com/libevent/libevent/archive/ +$(package)_download_path=https://github.com/libevent/libevent/archive $(package)_file_name=$(package)-$($(package)_version).tar.gz $(package)_download_file=release-$($(package)_version)-stable.tar.gz $(package)_sha256_hash=316ddb401745ac5d222d7c529ef1eada12f58f6376a66c1118eee803cb70f83d diff --git a/depends/packages/libgmp.mk b/depends/packages/libgmp.mk index d8e41573a..c62fa18ed 100644 --- a/depends/packages/libgmp.mk +++ b/depends/packages/libgmp.mk @@ -1,7 +1,7 @@ package=libgmp ifeq ($(host_os),mingw32) -$(package)_download_path=https://github.com/joshuayabut/$(package)/archive/ +$(package)_download_path=https://github.com/joshuayabut/$(package)/archive $(package)_file_name=$(package)-$($(package)_git_commit).tar.gz $(package)_download_file=$($(package)_git_commit).tar.gz $(package)_sha256_hash=193836c1acc9dc00fe2521205d7bbe1ba13263f6cbef6f02584bf6f8b34b108f @@ -9,7 +9,7 @@ $(package)_git_commit=053c03b1cab347671d936f43ef66b48ab5e380ee $(package)_dependencies= $(package)_config_opts=--enable-cxx --disable-shared else ifeq ($(build_os),darwin) -$(package)_download_path=https://github.com/ca333/$(package)/archive/ +$(package)_download_path=https://github.com/ca333/$(package)/archive $(package)_file_name=$(package)-$($(package)_git_commit).tar.gz $(package)_download_file=$($(package)_git_commit).tar.gz $(package)_sha256_hash=59b2c2b5d58fdf5943bfde1fa709e9eb53e7e072c9699d28dc1c2cbb3c8cc32c diff --git a/depends/packages/librustzcash.mk b/depends/packages/librustzcash.mk index 20126776a..689082f8f 100644 --- a/depends/packages/librustzcash.mk +++ b/depends/packages/librustzcash.mk @@ -1,6 +1,6 @@ package=librustzcash $(package)_version=0.1 -$(package)_download_path=https://github.com/zcash/$(package)/archive/ +$(package)_download_path=https://github.com/zcash/$(package)/archive $(package)_file_name=$(package)-$($(package)_git_commit).tar.gz $(package)_download_file=$($(package)_git_commit).tar.gz $(package)_sha256_hash=a5760a90d4a1045c8944204f29fa2a3cf2f800afee400f88bf89bbfe2cce1279 diff --git a/depends/packages/libsodium.mk b/depends/packages/libsodium.mk index efa5d90de..67e096fae 100644 --- a/depends/packages/libsodium.mk +++ b/depends/packages/libsodium.mk @@ -9,7 +9,7 @@ $(package)_config_opts= else package=libsodium $(package)_version=1.0.15 -$(package)_download_path=https://download.libsodium.org/libsodium/releases/ +$(package)_download_path=https://download.libsodium.org/libsodium/releases $(package)_file_name=$(package)-$($(package)_version).tar.gz $(package)_sha256_hash=fb6a9e879a2f674592e4328c5d9f79f082405ee4bb05cb6e679b90afe9e178f4 $(package)_dependencies= diff --git a/depends/packages/zeromq.mk b/depends/packages/zeromq.mk index 850cce778..66e491ffb 100644 --- a/depends/packages/zeromq.mk +++ b/depends/packages/zeromq.mk @@ -1,6 +1,6 @@ ifeq ($(host_os),mingw32) $(package)_version=4.2.2-1 -$(package)_download_path=https://github.com/ca333/libzmq/archive/ +$(package)_download_path=https://github.com/ca333/libzmq/archive $(package)_download_file=v$($(package)_version).tar.gz $(package)_file_name=libzmq-$($(package)_version).tar.gz $(package)_sha256_hash=0e225b85ce11be23bf7eb7d3f25c6686728bf30d5c31f61c12d37bb646c69962 From 6252e12f176b6d3f083a81a34bed1f0042298415 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 18 Aug 2018 00:54:53 -1100 Subject: [PATCH 04/15] +print --- src/script/interpreter.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/script/interpreter.cpp b/src/script/interpreter.cpp index 4295d4ddc..e33930624 100644 --- a/src/script/interpreter.cpp +++ b/src/script/interpreter.cpp @@ -952,7 +952,7 @@ bool EvalScript( if (stack.size() < 2) return set_error(serror, SCRIPT_ERR_INVALID_STACK_OPERATION); - +fprintf(stderr,"check cryptocondition\n"); int fResult = checker.CheckCryptoCondition(stacktop(-1), stacktop(-2), script, consensusBranchId); if (fResult == -1) { return set_error(serror, SCRIPT_ERR_CRYPTOCONDITION_INVALID_FULFILLMENT); @@ -1313,14 +1313,14 @@ int TransactionSignatureChecker::CheckCryptoCondition( } catch (logic_error ex) { return 0; } - //int32_t z; uint8_t *ptr; - //ptr = (uint8_t *)scriptCode.data(); - //for (z=0; zCheckEvalCondition(cond); @@ -1328,7 +1328,7 @@ int TransactionSignatureChecker::CheckCryptoCondition( int out = cc_verify(cond, (const unsigned char*)&sighash, 32, 0, condBin.data(), condBin.size(), eval, (void*)this); - //fprintf(stderr,"out.%d from cc_verify\n",(int32_t)out); + fprintf(stderr,"out.%d from cc_verify\n",(int32_t)out); cc_free(cond); return out; } From 64836d75a01a5fc106e17eeec10bfae3ddea6dcf Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 18 Aug 2018 01:11:31 -1100 Subject: [PATCH 05/15] +print --- src/script/interpreter.cpp | 1 + src/script/serverchecker.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/script/interpreter.cpp b/src/script/interpreter.cpp index e33930624..e12e3a457 100644 --- a/src/script/interpreter.cpp +++ b/src/script/interpreter.cpp @@ -1323,6 +1323,7 @@ int TransactionSignatureChecker::CheckCryptoCondition( fprintf(stderr," sighash nIn.%d nHashType.%d %.8f id.%d\n",(int32_t)nIn,(int32_t)nHashType,(double)amount/COIN,(int32_t)consensusBranchId); VerifyEval eval = [] (CC *cond, void *checker) { + fprintf(stderr,"checker.%p\n",(TransactionSignatureChecker*)checker); return ((TransactionSignatureChecker*)checker)->CheckEvalCondition(cond); }; diff --git a/src/script/serverchecker.cpp b/src/script/serverchecker.cpp index 4de69001a..4451ab485 100644 --- a/src/script/serverchecker.cpp +++ b/src/script/serverchecker.cpp @@ -102,5 +102,6 @@ bool ServerTransactionSignatureChecker::VerifySignature(const std::vector Date: Sat, 18 Aug 2018 01:27:42 -1100 Subject: [PATCH 06/15] +print --- src/cryptoconditions/src/cryptoconditions.c | 5 +++++ src/script/interpreter.cpp | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/cryptoconditions/src/cryptoconditions.c b/src/cryptoconditions/src/cryptoconditions.c index b58d7a70c..011995566 100644 --- a/src/cryptoconditions/src/cryptoconditions.c +++ b/src/cryptoconditions/src/cryptoconditions.c @@ -232,12 +232,15 @@ int cc_verify(const struct CC *cond, const unsigned char *msg, size_t msgLength, const unsigned char *condBin, size_t condBinLength, VerifyEval verifyEval, void *evalContext) { unsigned char targetBinary[1000]; + fprintf(stderr,"in cc_verify cond.%p msg.%p[%d] dohash.%d condbin.%p[%d]\n",cond,msg,(int32_t)msgLength,doHashMsg,condBin,(int32_t)condBinLength); const size_t binLength = cc_conditionBinary(cond, targetBinary); if (0 != memcmp(condBin, targetBinary, binLength)) { + fprintf(stderr,"cc_verify error A\n"); return 0; } if (!cc_ed25519VerifyTree(cond, msg, msgLength)) { + fprintf(stderr,"cc_verify error B\n"); return 0; } @@ -246,10 +249,12 @@ int cc_verify(const struct CC *cond, const unsigned char *msg, size_t msgLength, else memcpy(msgHash, msg, 32); if (!cc_secp256k1VerifyTreeMsg32(cond, msgHash)) { + fprintf(stderr,"cc_verify error C\n"); return 0; } if (!cc_verifyEval(cond, verifyEval, evalContext)) { + fprintf(stderr,"cc_verify error D\n"); return 0; } return 1; diff --git a/src/script/interpreter.cpp b/src/script/interpreter.cpp index e12e3a457..c9bf1b1ab 100644 --- a/src/script/interpreter.cpp +++ b/src/script/interpreter.cpp @@ -1326,7 +1326,7 @@ int TransactionSignatureChecker::CheckCryptoCondition( fprintf(stderr,"checker.%p\n",(TransactionSignatureChecker*)checker); return ((TransactionSignatureChecker*)checker)->CheckEvalCondition(cond); }; - + fprintf(stderr,"non-checker path\n"); int out = cc_verify(cond, (const unsigned char*)&sighash, 32, 0, condBin.data(), condBin.size(), eval, (void*)this); fprintf(stderr,"out.%d from cc_verify\n",(int32_t)out); From dc71c17e6f387359a6cb4830362b89c81043dc6b Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 18 Aug 2018 01:35:48 -1100 Subject: [PATCH 07/15] +prints --- src/cryptoconditions/src/cryptoconditions.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/cryptoconditions/src/cryptoconditions.c b/src/cryptoconditions/src/cryptoconditions.c index 011995566..488581e2a 100644 --- a/src/cryptoconditions/src/cryptoconditions.c +++ b/src/cryptoconditions/src/cryptoconditions.c @@ -117,14 +117,20 @@ uint32_t fromAsnSubtypes(const ConditionTypes_t types) { size_t cc_conditionBinary(const CC *cond, unsigned char *buf) { + fprintf(stderr,"inside cc_conditionBinary\n"); Condition_t *asn = calloc(1, sizeof(Condition_t)); + fprintf(stderr,"asn.%p\n",asn); asnCondition(cond, asn); + fprintf(stderr,"call derencode\n"); asn_enc_rval_t rc = der_encode_to_buffer(&asn_DEF_Condition, asn, buf, 1000); + fprintf(stderr,"back from derencode\n"); if (rc.encoded == -1) { fprintf(stderr, "CONDITION NOT ENCODED\n"); return 0; } + fprintf(stderr,"call ASN_STRUCT_FREE\n"); ASN_STRUCT_FREE(asn_DEF_Condition, asn); + fprintf(stderr,"return rc.encoded %d\n",(int32_t)rc.encoded); return rc.encoded; } From ebd4cace15b5e86eed68488bb4565b31d1d307f0 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 18 Aug 2018 01:36:50 -1100 Subject: [PATCH 08/15] +print --- src/cryptoconditions/src/cryptoconditions.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/cryptoconditions/src/cryptoconditions.c b/src/cryptoconditions/src/cryptoconditions.c index 488581e2a..0ee535e2d 100644 --- a/src/cryptoconditions/src/cryptoconditions.c +++ b/src/cryptoconditions/src/cryptoconditions.c @@ -244,25 +244,29 @@ int cc_verify(const struct CC *cond, const unsigned char *msg, size_t msgLength, fprintf(stderr,"cc_verify error A\n"); return 0; } - + fprintf(stderr,"after memcmp\n"); if (!cc_ed25519VerifyTree(cond, msg, msgLength)) { fprintf(stderr,"cc_verify error B\n"); return 0; } + fprintf(stderr,"after cc_ed25519VerifyTree\n"); unsigned char msgHash[32]; if (doHashMsg) sha256(msg, msgLength, msgHash); else memcpy(msgHash, msg, 32); + fprintf(stderr,"after memcpy/sha256\n"); if (!cc_secp256k1VerifyTreeMsg32(cond, msgHash)) { fprintf(stderr,"cc_verify error C\n"); return 0; } + fprintf(stderr,"after cc_secp256k1VerifyTreeMsg32\n"); if (!cc_verifyEval(cond, verifyEval, evalContext)) { fprintf(stderr,"cc_verify error D\n"); return 0; } + fprintf(stderr,"return 1\n"); return 1; } From 0545c2cd9555d1c86b69b81cf6289ff9f07869fc Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 18 Aug 2018 01:42:35 -1100 Subject: [PATCH 09/15] Next layer --- src/cryptoconditions/src/cryptoconditions.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/cryptoconditions/src/cryptoconditions.c b/src/cryptoconditions/src/cryptoconditions.c index 0ee535e2d..9ccb987fb 100644 --- a/src/cryptoconditions/src/cryptoconditions.c +++ b/src/cryptoconditions/src/cryptoconditions.c @@ -153,12 +153,15 @@ void asnCondition(const CC *cond, Condition_t *asn) { // This may look a little weird - we dont have a reference here to the correct // union choice for the condition type, so we just assign everything to the threshold // type. This works out nicely since the union choices have the same binary interface. - + fprintf(stderr,"asnCondition type.%p\n",asn->type); CompoundSha256Condition_t *choice = &asn->choice.thresholdSha256; choice->cost = cc_getCost(cond); + fprintf(stderr,"after cost\n"); choice->fingerprint.buf = cond->type->fingerprint(cond); choice->fingerprint.size = 32; + fprintf(stderr,"after fingerprint\n"); choice->subtypes = asnSubtypes(cond->type->getSubtypes(cond)); + fprintf(stderr,"after asnSubtypes\n"); } From 9178b67d65e83cfbed524cec46d8485dbbbde9f7 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 18 Aug 2018 01:48:16 -1100 Subject: [PATCH 10/15] Fix --- src/cryptoconditions/src/cryptoconditions.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cryptoconditions/src/cryptoconditions.c b/src/cryptoconditions/src/cryptoconditions.c index 9ccb987fb..c132b4870 100644 --- a/src/cryptoconditions/src/cryptoconditions.c +++ b/src/cryptoconditions/src/cryptoconditions.c @@ -153,7 +153,7 @@ void asnCondition(const CC *cond, Condition_t *asn) { // This may look a little weird - we dont have a reference here to the correct // union choice for the condition type, so we just assign everything to the threshold // type. This works out nicely since the union choices have the same binary interface. - fprintf(stderr,"asnCondition type.%p\n",asn->type); + fprintf(stderr,"asnCondition type.%p\n",cond->type); CompoundSha256Condition_t *choice = &asn->choice.thresholdSha256; choice->cost = cc_getCost(cond); fprintf(stderr,"after cost\n"); From a57cea0bee671a68b2eda52d76d3a71f505d4869 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 18 Aug 2018 02:54:51 -1100 Subject: [PATCH 11/15] Fingerprint prints --- src/cryptoconditions/src/anon.c | 1 + src/cryptoconditions/src/cryptoconditions.c | 3 +-- src/cryptoconditions/src/ed25519.c | 1 + src/cryptoconditions/src/eval.c | 1 + src/cryptoconditions/src/prefix.c | 1 + src/cryptoconditions/src/preimage.c | 1 + src/cryptoconditions/src/secp256k1.c | 1 + src/cryptoconditions/src/threshold.c | 1 + 8 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/cryptoconditions/src/anon.c b/src/cryptoconditions/src/anon.c index 43e96ae44..8c2b9cea6 100644 --- a/src/cryptoconditions/src/anon.c +++ b/src/cryptoconditions/src/anon.c @@ -55,6 +55,7 @@ static void anonToJSON(const CC *cond, cJSON *params) { static unsigned char *anonFingerprint(const CC *cond) { unsigned char *out = calloc(1, 32); + fprintf(stderr,"anon fingerprint %p %p\n",out,cond->fingerprint); memcpy(out, cond->fingerprint, 32); return out; } diff --git a/src/cryptoconditions/src/cryptoconditions.c b/src/cryptoconditions/src/cryptoconditions.c index c132b4870..fe277904e 100644 --- a/src/cryptoconditions/src/cryptoconditions.c +++ b/src/cryptoconditions/src/cryptoconditions.c @@ -71,8 +71,7 @@ char *cc_conditionUri(const CC *cond) { unsigned char *encoded = base64_encode(fp, 32); unsigned char *out = calloc(1, 1000); - sprintf(out, "ni:///sha-256;%s?fpt=%s&cost=%lu", - encoded, cc_typeName(cond), cc_getCost(cond)); + sprintf(out, "ni:///sha-256;%s?fpt=%s&cost=%lu",encoded, cc_typeName(cond), cc_getCost(cond)); if (cond->type->getSubtypes) { appendUriSubtypes(cond->type->getSubtypes(cond), out); diff --git a/src/cryptoconditions/src/ed25519.c b/src/cryptoconditions/src/ed25519.c index d7ebb085e..8d4046241 100644 --- a/src/cryptoconditions/src/ed25519.c +++ b/src/cryptoconditions/src/ed25519.c @@ -27,6 +27,7 @@ struct CCType CC_Ed25519Type; static unsigned char *ed25519Fingerprint(const CC *cond) { Ed25519FingerprintContents_t *fp = calloc(1, sizeof(Ed25519FingerprintContents_t)); + fprintf(stderr,"ed25519 fingerprint %p %p\n",fp,cond->publicKey); OCTET_STRING_fromBuf(&fp->publicKey, cond->publicKey, 32); return hashFingerprintContents(&asn_DEF_Ed25519FingerprintContents, fp); } diff --git a/src/cryptoconditions/src/eval.c b/src/cryptoconditions/src/eval.c index df0f1af5d..a3e773699 100644 --- a/src/cryptoconditions/src/eval.c +++ b/src/cryptoconditions/src/eval.c @@ -27,6 +27,7 @@ struct CCType CC_EvalType; static unsigned char *evalFingerprint(const CC *cond) { unsigned char *hash = calloc(1, 32); + fprintf(stderr,"evalfingerprint %p %p\n",hash,cond->code); sha256(cond->code, cond->codeLength, hash); return hash; } diff --git a/src/cryptoconditions/src/prefix.c b/src/cryptoconditions/src/prefix.c index bebebba6e..ec961a939 100644 --- a/src/cryptoconditions/src/prefix.c +++ b/src/cryptoconditions/src/prefix.c @@ -39,6 +39,7 @@ static int prefixVisitChildren(CC *cond, CCVisitor visitor) { static unsigned char *prefixFingerprint(const CC *cond) { PrefixFingerprintContents_t *fp = calloc(1, sizeof(PrefixFingerprintContents_t)); + fprintf(stderr,"prefixfinger %p %p\n",fp,cond->prefix); asnCondition(cond->subcondition, &fp->subcondition); // TODO: check asnCondition for safety fp->maxMessageLength = cond->maxMessageLength; OCTET_STRING_fromBuf(&fp->prefix, cond->prefix, cond->prefixLength); diff --git a/src/cryptoconditions/src/preimage.c b/src/cryptoconditions/src/preimage.c index 8902817dd..3b1a1cf2e 100644 --- a/src/cryptoconditions/src/preimage.c +++ b/src/cryptoconditions/src/preimage.c @@ -46,6 +46,7 @@ static unsigned long preimageCost(const CC *cond) { static unsigned char *preimageFingerprint(const CC *cond) { unsigned char *hash = calloc(1, 32); + fprintf(stderr,"preimage %p %p\n",hash,cond->preimage); sha256(cond->preimage, cond->preimageLength, hash); return hash; } diff --git a/src/cryptoconditions/src/secp256k1.c b/src/cryptoconditions/src/secp256k1.c index 78b9c4e9e..cbf4dfd32 100644 --- a/src/cryptoconditions/src/secp256k1.c +++ b/src/cryptoconditions/src/secp256k1.c @@ -73,6 +73,7 @@ void initVerify() { static unsigned char *secp256k1Fingerprint(const CC *cond) { Secp256k1FingerprintContents_t *fp = calloc(1, sizeof(Secp256k1FingerprintContents_t)); + fprintf(stderr,"secpfinger %p %p\n",fp,cond->publicKey); OCTET_STRING_fromBuf(&fp->publicKey, cond->publicKey, SECP256K1_PK_SIZE); return hashFingerprintContents(&asn_DEF_Secp256k1FingerprintContents, fp); } diff --git a/src/cryptoconditions/src/threshold.c b/src/cryptoconditions/src/threshold.c index 88d4e7f50..0ac2b0dad 100644 --- a/src/cryptoconditions/src/threshold.c +++ b/src/cryptoconditions/src/threshold.c @@ -86,6 +86,7 @@ static int cmpConditionBin(const void *a, const void *b) { static unsigned char *thresholdFingerprint(const CC *cond) { /* Create fingerprint */ ThresholdFingerprintContents_t *fp = calloc(1, sizeof(ThresholdFingerprintContents_t)); + fprintf(stderr,"thresholdfinger %p\n",fp); fp->threshold = cond->threshold; for (int i=0; isize; i++) { Condition_t *asnCond = asnConditionNew(cond->subconditions[i]); From b626aafeb041db7f68faea47c23478e834bec15c Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 18 Aug 2018 03:01:37 -1100 Subject: [PATCH 12/15] Smaller buf --- src/cryptoconditions/src/internal.h | 2 +- src/cryptoconditions/src/secp256k1.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/cryptoconditions/src/internal.h b/src/cryptoconditions/src/internal.h index 8082f9b75..3010a0bb2 100644 --- a/src/cryptoconditions/src/internal.h +++ b/src/cryptoconditions/src/internal.h @@ -28,7 +28,7 @@ extern "C" { #endif -#define BUF_SIZE 1024 * 1024 +#define BUF_SIZE 65536 // does it really need to be 1 MB?? 1024 * 1024 typedef char bool; diff --git a/src/cryptoconditions/src/secp256k1.c b/src/cryptoconditions/src/secp256k1.c index cbf4dfd32..75d7f2690 100644 --- a/src/cryptoconditions/src/secp256k1.c +++ b/src/cryptoconditions/src/secp256k1.c @@ -73,8 +73,9 @@ void initVerify() { static unsigned char *secp256k1Fingerprint(const CC *cond) { Secp256k1FingerprintContents_t *fp = calloc(1, sizeof(Secp256k1FingerprintContents_t)); - fprintf(stderr,"secpfinger %p %p\n",fp,cond->publicKey); + fprintf(stderr,"secpfinger %p %p size %d vs %d\n",fp,cond->publicKey,(int32_t)sizeof(Secp256k1FingerprintContents_t),(int32_t)SECP256K1_PK_SIZE); OCTET_STRING_fromBuf(&fp->publicKey, cond->publicKey, SECP256K1_PK_SIZE); + fprintf(stderr,"got octet\n"); return hashFingerprintContents(&asn_DEF_Secp256k1FingerprintContents, fp); } From b4795ed684e6cff5ada8bada1b40f3ab750d766d Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 18 Aug 2018 03:07:53 -1100 Subject: [PATCH 13/15] -prints --- src/cc/CCutils.cpp | 2 +- src/cc/eval.cpp | 2 +- src/cryptoconditions/src/cryptoconditions.c | 17 +---------------- src/cryptoconditions/src/ed25519.c | 2 +- src/cryptoconditions/src/eval.c | 2 +- src/cryptoconditions/src/prefix.c | 2 +- src/cryptoconditions/src/preimage.c | 2 +- src/cryptoconditions/src/secp256k1.c | 3 +-- src/cryptoconditions/src/threshold.c | 2 +- src/script/interpreter.cpp | 12 ++++++------ 10 files changed, 15 insertions(+), 31 deletions(-) diff --git a/src/cc/CCutils.cpp b/src/cc/CCutils.cpp index 785e9d952..8cb06ab25 100644 --- a/src/cc/CCutils.cpp +++ b/src/cc/CCutils.cpp @@ -260,7 +260,7 @@ bool ProcessCC(struct CCcontract_info *cp,Eval* eval, std::vector param //txid = ctx.GetHash(); //if ( txid == cp->prevtxid ) // return(true); - fprintf(stderr,"process CC %02x\n",cp->evalcode); + //fprintf(stderr,"process CC %02x\n",cp->evalcode); if ( paramsNull.size() != 0 ) // Don't expect params return eval->Invalid("Cannot have params"); else if ( ctx.vout.size() == 0 ) diff --git a/src/cc/eval.cpp b/src/cc/eval.cpp index 949728be4..b6fcf57dd 100644 --- a/src/cc/eval.cpp +++ b/src/cc/eval.cpp @@ -38,7 +38,7 @@ bool RunCCEval(const CC *cond, const CTransaction &tx, unsigned int nIn) pthread_mutex_lock(&KOMODO_CC_mutex); bool out = eval->Dispatch(cond, tx, nIn); pthread_mutex_unlock(&KOMODO_CC_mutex); - fprintf(stderr,"out %d vs %d isValid\n",(int32_t)out,(int32_t)eval->state.IsValid()); + //fprintf(stderr,"out %d vs %d isValid\n",(int32_t)out,(int32_t)eval->state.IsValid()); assert(eval->state.IsValid() == out); if (eval->state.IsValid()) return true; diff --git a/src/cryptoconditions/src/cryptoconditions.c b/src/cryptoconditions/src/cryptoconditions.c index fe277904e..c9a4b27df 100644 --- a/src/cryptoconditions/src/cryptoconditions.c +++ b/src/cryptoconditions/src/cryptoconditions.c @@ -116,20 +116,14 @@ uint32_t fromAsnSubtypes(const ConditionTypes_t types) { size_t cc_conditionBinary(const CC *cond, unsigned char *buf) { - fprintf(stderr,"inside cc_conditionBinary\n"); Condition_t *asn = calloc(1, sizeof(Condition_t)); - fprintf(stderr,"asn.%p\n",asn); asnCondition(cond, asn); - fprintf(stderr,"call derencode\n"); asn_enc_rval_t rc = der_encode_to_buffer(&asn_DEF_Condition, asn, buf, 1000); - fprintf(stderr,"back from derencode\n"); if (rc.encoded == -1) { fprintf(stderr, "CONDITION NOT ENCODED\n"); return 0; } - fprintf(stderr,"call ASN_STRUCT_FREE\n"); ASN_STRUCT_FREE(asn_DEF_Condition, asn); - fprintf(stderr,"return rc.encoded %d\n",(int32_t)rc.encoded); return rc.encoded; } @@ -152,15 +146,11 @@ void asnCondition(const CC *cond, Condition_t *asn) { // This may look a little weird - we dont have a reference here to the correct // union choice for the condition type, so we just assign everything to the threshold // type. This works out nicely since the union choices have the same binary interface. - fprintf(stderr,"asnCondition type.%p\n",cond->type); CompoundSha256Condition_t *choice = &asn->choice.thresholdSha256; choice->cost = cc_getCost(cond); - fprintf(stderr,"after cost\n"); choice->fingerprint.buf = cond->type->fingerprint(cond); choice->fingerprint.size = 32; - fprintf(stderr,"after fingerprint\n"); choice->subtypes = asnSubtypes(cond->type->getSubtypes(cond)); - fprintf(stderr,"after asnSubtypes\n"); } @@ -240,35 +230,30 @@ int cc_verify(const struct CC *cond, const unsigned char *msg, size_t msgLength, const unsigned char *condBin, size_t condBinLength, VerifyEval verifyEval, void *evalContext) { unsigned char targetBinary[1000]; - fprintf(stderr,"in cc_verify cond.%p msg.%p[%d] dohash.%d condbin.%p[%d]\n",cond,msg,(int32_t)msgLength,doHashMsg,condBin,(int32_t)condBinLength); + //fprintf(stderr,"in cc_verify cond.%p msg.%p[%d] dohash.%d condbin.%p[%d]\n",cond,msg,(int32_t)msgLength,doHashMsg,condBin,(int32_t)condBinLength); const size_t binLength = cc_conditionBinary(cond, targetBinary); if (0 != memcmp(condBin, targetBinary, binLength)) { fprintf(stderr,"cc_verify error A\n"); return 0; } - fprintf(stderr,"after memcmp\n"); if (!cc_ed25519VerifyTree(cond, msg, msgLength)) { fprintf(stderr,"cc_verify error B\n"); return 0; } - fprintf(stderr,"after cc_ed25519VerifyTree\n"); unsigned char msgHash[32]; if (doHashMsg) sha256(msg, msgLength, msgHash); else memcpy(msgHash, msg, 32); - fprintf(stderr,"after memcpy/sha256\n"); if (!cc_secp256k1VerifyTreeMsg32(cond, msgHash)) { fprintf(stderr,"cc_verify error C\n"); return 0; } - fprintf(stderr,"after cc_secp256k1VerifyTreeMsg32\n"); if (!cc_verifyEval(cond, verifyEval, evalContext)) { fprintf(stderr,"cc_verify error D\n"); return 0; } - fprintf(stderr,"return 1\n"); return 1; } diff --git a/src/cryptoconditions/src/ed25519.c b/src/cryptoconditions/src/ed25519.c index 8d4046241..4fb3bbb8d 100644 --- a/src/cryptoconditions/src/ed25519.c +++ b/src/cryptoconditions/src/ed25519.c @@ -27,7 +27,7 @@ struct CCType CC_Ed25519Type; static unsigned char *ed25519Fingerprint(const CC *cond) { Ed25519FingerprintContents_t *fp = calloc(1, sizeof(Ed25519FingerprintContents_t)); - fprintf(stderr,"ed25519 fingerprint %p %p\n",fp,cond->publicKey); + //fprintf(stderr,"ed25519 fingerprint %p %p\n",fp,cond->publicKey); OCTET_STRING_fromBuf(&fp->publicKey, cond->publicKey, 32); return hashFingerprintContents(&asn_DEF_Ed25519FingerprintContents, fp); } diff --git a/src/cryptoconditions/src/eval.c b/src/cryptoconditions/src/eval.c index a3e773699..544f6dd54 100644 --- a/src/cryptoconditions/src/eval.c +++ b/src/cryptoconditions/src/eval.c @@ -27,7 +27,7 @@ struct CCType CC_EvalType; static unsigned char *evalFingerprint(const CC *cond) { unsigned char *hash = calloc(1, 32); - fprintf(stderr,"evalfingerprint %p %p\n",hash,cond->code); + //fprintf(stderr,"evalfingerprint %p %p\n",hash,cond->code); sha256(cond->code, cond->codeLength, hash); return hash; } diff --git a/src/cryptoconditions/src/prefix.c b/src/cryptoconditions/src/prefix.c index ec961a939..626fc5992 100644 --- a/src/cryptoconditions/src/prefix.c +++ b/src/cryptoconditions/src/prefix.c @@ -39,7 +39,7 @@ static int prefixVisitChildren(CC *cond, CCVisitor visitor) { static unsigned char *prefixFingerprint(const CC *cond) { PrefixFingerprintContents_t *fp = calloc(1, sizeof(PrefixFingerprintContents_t)); - fprintf(stderr,"prefixfinger %p %p\n",fp,cond->prefix); + //fprintf(stderr,"prefixfinger %p %p\n",fp,cond->prefix); asnCondition(cond->subcondition, &fp->subcondition); // TODO: check asnCondition for safety fp->maxMessageLength = cond->maxMessageLength; OCTET_STRING_fromBuf(&fp->prefix, cond->prefix, cond->prefixLength); diff --git a/src/cryptoconditions/src/preimage.c b/src/cryptoconditions/src/preimage.c index 3b1a1cf2e..7c8e56996 100644 --- a/src/cryptoconditions/src/preimage.c +++ b/src/cryptoconditions/src/preimage.c @@ -46,7 +46,7 @@ static unsigned long preimageCost(const CC *cond) { static unsigned char *preimageFingerprint(const CC *cond) { unsigned char *hash = calloc(1, 32); - fprintf(stderr,"preimage %p %p\n",hash,cond->preimage); + //fprintf(stderr,"preimage %p %p\n",hash,cond->preimage); sha256(cond->preimage, cond->preimageLength, hash); return hash; } diff --git a/src/cryptoconditions/src/secp256k1.c b/src/cryptoconditions/src/secp256k1.c index 75d7f2690..c1eb82765 100644 --- a/src/cryptoconditions/src/secp256k1.c +++ b/src/cryptoconditions/src/secp256k1.c @@ -73,9 +73,8 @@ void initVerify() { static unsigned char *secp256k1Fingerprint(const CC *cond) { Secp256k1FingerprintContents_t *fp = calloc(1, sizeof(Secp256k1FingerprintContents_t)); - fprintf(stderr,"secpfinger %p %p size %d vs %d\n",fp,cond->publicKey,(int32_t)sizeof(Secp256k1FingerprintContents_t),(int32_t)SECP256K1_PK_SIZE); + //fprintf(stderr,"secpfinger %p %p size %d vs %d\n",fp,cond->publicKey,(int32_t)sizeof(Secp256k1FingerprintContents_t),(int32_t)SECP256K1_PK_SIZE); OCTET_STRING_fromBuf(&fp->publicKey, cond->publicKey, SECP256K1_PK_SIZE); - fprintf(stderr,"got octet\n"); return hashFingerprintContents(&asn_DEF_Secp256k1FingerprintContents, fp); } diff --git a/src/cryptoconditions/src/threshold.c b/src/cryptoconditions/src/threshold.c index 0ac2b0dad..13c3fdab3 100644 --- a/src/cryptoconditions/src/threshold.c +++ b/src/cryptoconditions/src/threshold.c @@ -86,7 +86,7 @@ static int cmpConditionBin(const void *a, const void *b) { static unsigned char *thresholdFingerprint(const CC *cond) { /* Create fingerprint */ ThresholdFingerprintContents_t *fp = calloc(1, sizeof(ThresholdFingerprintContents_t)); - fprintf(stderr,"thresholdfinger %p\n",fp); + //fprintf(stderr,"thresholdfinger %p\n",fp); fp->threshold = cond->threshold; for (int i=0; isize; i++) { Condition_t *asnCond = asnConditionNew(cond->subconditions[i]); diff --git a/src/script/interpreter.cpp b/src/script/interpreter.cpp index c9bf1b1ab..c2e02ad25 100644 --- a/src/script/interpreter.cpp +++ b/src/script/interpreter.cpp @@ -952,7 +952,7 @@ bool EvalScript( if (stack.size() < 2) return set_error(serror, SCRIPT_ERR_INVALID_STACK_OPERATION); -fprintf(stderr,"check cryptocondition\n"); +//fprintf(stderr,"check cryptocondition\n"); int fResult = checker.CheckCryptoCondition(stacktop(-1), stacktop(-2), script, consensusBranchId); if (fResult == -1) { return set_error(serror, SCRIPT_ERR_CRYPTOCONDITION_INVALID_FULFILLMENT); @@ -1313,7 +1313,7 @@ int TransactionSignatureChecker::CheckCryptoCondition( } catch (logic_error ex) { return 0; } - int32_t z; uint8_t *ptr; + /*int32_t z; uint8_t *ptr; ptr = (uint8_t *)scriptCode.data(); for (z=0; zCheckEvalCondition(cond); }; - fprintf(stderr,"non-checker path\n"); + //fprintf(stderr,"non-checker path\n"); int out = cc_verify(cond, (const unsigned char*)&sighash, 32, 0, condBin.data(), condBin.size(), eval, (void*)this); - fprintf(stderr,"out.%d from cc_verify\n",(int32_t)out); + //fprintf(stderr,"out.%d from cc_verify\n",(int32_t)out); cc_free(cond); return out; } From 7b257028f8be580b1219c7fabd23adf54d4a75b7 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 18 Aug 2018 03:09:36 -1100 Subject: [PATCH 14/15] Test --- src/cryptoconditions/src/cryptoconditions.c | 2 +- src/script/serverchecker.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cryptoconditions/src/cryptoconditions.c b/src/cryptoconditions/src/cryptoconditions.c index c9a4b27df..b9b08af20 100644 --- a/src/cryptoconditions/src/cryptoconditions.c +++ b/src/cryptoconditions/src/cryptoconditions.c @@ -251,7 +251,7 @@ int cc_verify(const struct CC *cond, const unsigned char *msg, size_t msgLength, } if (!cc_verifyEval(cond, verifyEval, evalContext)) { - fprintf(stderr,"cc_verify error D\n"); + //fprintf(stderr,"cc_verify error D\n"); return 0; } return 1; diff --git a/src/script/serverchecker.cpp b/src/script/serverchecker.cpp index 4451ab485..e82fd3a81 100644 --- a/src/script/serverchecker.cpp +++ b/src/script/serverchecker.cpp @@ -102,6 +102,6 @@ bool ServerTransactionSignatureChecker::VerifySignature(const std::vector Date: Sat, 18 Aug 2018 03:19:28 -1100 Subject: [PATCH 15/15] Reduce BUF_SIZE --- src/cryptoconditions/src/internal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cryptoconditions/src/internal.h b/src/cryptoconditions/src/internal.h index 3010a0bb2..41080186e 100644 --- a/src/cryptoconditions/src/internal.h +++ b/src/cryptoconditions/src/internal.h @@ -28,7 +28,7 @@ extern "C" { #endif -#define BUF_SIZE 65536 // does it really need to be 1 MB?? 1024 * 1024 +#define BUF_SIZE 4096 typedef char bool;