From 539b6dd1a9228d8174dc8cb0de29aabfeb437afe Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 19 Jan 2019 00:38:55 -1100 Subject: [PATCH 1/7] -ac_ccenable[] --- src/cc/CCinclude.h | 1 + src/cc/eval.cpp | 5 +++++ src/komodo_globals.h | 1 + src/komodo_utils.h | 19 ++++++++++++++++++- 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/cc/CCinclude.h b/src/cc/CCinclude.h index d103f408d..d3acbd5e6 100644 --- a/src/cc/CCinclude.h +++ b/src/cc/CCinclude.h @@ -55,6 +55,7 @@ extern int32_t KOMODO_CONNECTING,KOMODO_CCACTIVATE,KOMODO_DEALERNODE; extern uint32_t ASSETCHAINS_CC; extern char ASSETCHAINS_SYMBOL[]; extern std::string CCerror; +extern ASSETCHAINS_CCDISABLES[256]; #define CC_MAXVINS 1024 diff --git a/src/cc/eval.cpp b/src/cc/eval.cpp index 9161f2007..b98982ecd 100644 --- a/src/cc/eval.cpp +++ b/src/cc/eval.cpp @@ -65,6 +65,11 @@ bool Eval::Dispatch(const CC *cond, const CTransaction &txTo, unsigned int nIn) return Invalid("empty-eval"); uint8_t ecode = cond->code[0]; + if ( ASSETCHAINS_CCDISABLES[ecode] != 0 ) + { + fprintf(stderr,"%s evalcode.%d %02x\n",txTo.GetHash().GetHex().c_str(),ecode,ecode); + return Invalid("disabled-code, -ac_ccenables didnt include this ecode"); + } cp = &CCinfos[(int32_t)ecode]; if ( cp->didinit == 0 ) { diff --git a/src/komodo_globals.h b/src/komodo_globals.h index f434674b7..4e1d0ef8d 100644 --- a/src/komodo_globals.h +++ b/src/komodo_globals.h @@ -71,6 +71,7 @@ uint64_t ASSETCHAINS_TIMEUNLOCKFROM = 0, ASSETCHAINS_TIMEUNLOCKTO = 0; uint32_t ASSETCHAINS_LASTERA = 1; uint64_t ASSETCHAINS_ENDSUBSIDY[ASSETCHAINS_MAX_ERAS],ASSETCHAINS_REWARD[ASSETCHAINS_MAX_ERAS],ASSETCHAINS_HALVING[ASSETCHAINS_MAX_ERAS],ASSETCHAINS_DECAY[ASSETCHAINS_MAX_ERAS]; +uint8_t ASSETCHAINS_CCENABLE[256],ASSETCHAINS_CCDISABLES[256]; #define _ASSETCHAINS_EQUIHASH 0 uint32_t ASSETCHAINS_NUMALGOS = 2; diff --git a/src/komodo_utils.h b/src/komodo_utils.h index 017a17eff..163b1c43a 100644 --- a/src/komodo_utils.h +++ b/src/komodo_utils.h @@ -1654,7 +1654,7 @@ extern int64_t MAX_MONEY; void komodo_args(char *argv0) { extern const char *Notaries_elected1[][2]; - std::string name,addn; char *dirname,fname[512],arg0str[64],magicstr[9]; uint8_t magic[4],extrabuf[8192],*extraptr=0; FILE *fp; uint64_t val; uint16_t port; int32_t i,baseid,len,n,extralen = 0; + std::string name,addn; char *dirname,fname[512],arg0str[64],magicstr[9]; uint8_t magic[4],extrabuf[8192],*extraptr=0; FILE *fp; uint64_t val; uint16_t port; int32_t i,nonz,baseid,len,n,extralen = 0; IS_KOMODO_NOTARY = GetBoolArg("-notary", false); if ( GetBoolArg("-gen", false) != 0 ) @@ -1779,6 +1779,23 @@ void komodo_args(char *argv0) ASSETCHAINS_BEAMPORT = GetArg("-ac_beam",0); ASSETCHAINS_CODAPORT = GetArg("-ac_coda",0); ASSETCHAINS_MARMARA = GetArg("-ac_marmara",0); + Split(GetArg("-ac_ccenable",""), ASSETCHAINS_CCENABLE, 0); + for (i=nonz=0; i<0x100; i++) + { + if ( ASSETCHAINS_CCENABLE[i] != 0 ) + { + nonz++; + fprintf(stderr,"%d ",ASSETCHAINS_CCENABLE[i]); + } + } + fprintf(stderr,"nonz.%d CCENABLES[]\n"); + if ( nonz > 0 ) + { + for (i=0; i<256; i++) + ASSETCHAINS_CCDISABLES[i] = 1; + for (i=0; i<256; i++) + ASSETCHAINS_CCDISABLES[ASSETCHAINS_CCENABLE[i]] = 0; + } if ( ASSETCHAINS_BEAMPORT != 0 && ASSETCHAINS_CODAPORT != 0 ) { fprintf(stderr,"can only have one of -ac_beam or -ac_coda\n"); From 6e40c81b942c63ad43684ee6765accb92e5a41de Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 19 Jan 2019 00:39:53 -1100 Subject: [PATCH 2/7] uint8_t --- src/cc/CCinclude.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cc/CCinclude.h b/src/cc/CCinclude.h index d3acbd5e6..7541dc3a4 100644 --- a/src/cc/CCinclude.h +++ b/src/cc/CCinclude.h @@ -55,7 +55,7 @@ extern int32_t KOMODO_CONNECTING,KOMODO_CCACTIVATE,KOMODO_DEALERNODE; extern uint32_t ASSETCHAINS_CC; extern char ASSETCHAINS_SYMBOL[]; extern std::string CCerror; -extern ASSETCHAINS_CCDISABLES[256]; +extern uint8_t ASSETCHAINS_CCDISABLES[256]; #define CC_MAXVINS 1024 From 6e71c40201d247de410c7a12cb7f4e2ac87aa8c2 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 19 Jan 2019 00:48:53 -1100 Subject: [PATCH 3/7] Ccenables --- src/komodo_globals.h | 2 +- src/komodo_utils.h | 25 +++++++++++++++++-------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/komodo_globals.h b/src/komodo_globals.h index 4e1d0ef8d..ba5e84135 100644 --- a/src/komodo_globals.h +++ b/src/komodo_globals.h @@ -71,7 +71,7 @@ uint64_t ASSETCHAINS_TIMEUNLOCKFROM = 0, ASSETCHAINS_TIMEUNLOCKTO = 0; uint32_t ASSETCHAINS_LASTERA = 1; uint64_t ASSETCHAINS_ENDSUBSIDY[ASSETCHAINS_MAX_ERAS],ASSETCHAINS_REWARD[ASSETCHAINS_MAX_ERAS],ASSETCHAINS_HALVING[ASSETCHAINS_MAX_ERAS],ASSETCHAINS_DECAY[ASSETCHAINS_MAX_ERAS]; -uint8_t ASSETCHAINS_CCENABLE[256],ASSETCHAINS_CCDISABLES[256]; +uint8_t ASSETCHAINS_CCDISABLES[256]; #define _ASSETCHAINS_EQUIHASH 0 uint32_t ASSETCHAINS_NUMALGOS = 2; diff --git a/src/komodo_utils.h b/src/komodo_utils.h index 163b1c43a..e074bd4c0 100644 --- a/src/komodo_utils.h +++ b/src/komodo_utils.h @@ -1654,9 +1654,10 @@ extern int64_t MAX_MONEY; void komodo_args(char *argv0) { extern const char *Notaries_elected1[][2]; - std::string name,addn; char *dirname,fname[512],arg0str[64],magicstr[9]; uint8_t magic[4],extrabuf[8192],*extraptr=0; FILE *fp; uint64_t val; uint16_t port; int32_t i,nonz,baseid,len,n,extralen = 0; + std::string name,addn; char *dirname,fname[512],arg0str[64],magicstr[9]; uint8_t magic[4],extrabuf[8192],disablebits[32],*extraptr=0; FILE *fp; uint64_t val; uint16_t port; int32_t i,nonz,baseid,len,n,extralen = 0; uint64_t ccenables[256]; IS_KOMODO_NOTARY = GetBoolArg("-notary", false); - + memset(ccenables,0,sizeof(ccenables)); + memset(disablebits,0,sizeof(disablebits)); if ( GetBoolArg("-gen", false) != 0 ) { KOMODO_MININGTHREADS = GetArg("-genproclimit",-1); @@ -1779,22 +1780,25 @@ void komodo_args(char *argv0) ASSETCHAINS_BEAMPORT = GetArg("-ac_beam",0); ASSETCHAINS_CODAPORT = GetArg("-ac_coda",0); ASSETCHAINS_MARMARA = GetArg("-ac_marmara",0); - Split(GetArg("-ac_ccenable",""), ASSETCHAINS_CCENABLE, 0); + Split(GetArg("-ac_ccenable",""), ccenables, 0); for (i=nonz=0; i<0x100; i++) { - if ( ASSETCHAINS_CCENABLE[i] != 0 ) + if ( ccenables[i] != 0 ) { nonz++; - fprintf(stderr,"%d ",ASSETCHAINS_CCENABLE[i]); + fprintf(stderr,"%d ",ccenables[i]); } } - fprintf(stderr,"nonz.%d CCENABLES[]\n"); + fprintf(stderr,"nonz.%d ccenables[]\n",nonz); if ( nonz > 0 ) { for (i=0; i<256; i++) ASSETCHAINS_CCDISABLES[i] = 1; for (i=0; i<256; i++) - ASSETCHAINS_CCDISABLES[ASSETCHAINS_CCENABLE[i]] = 0; + { + SETBIT(disablebits,i); + ASSETCHAINS_CCDISABLES[ccenables[i] & 0xff] = 0; + } } if ( ASSETCHAINS_BEAMPORT != 0 && ASSETCHAINS_CODAPORT != 0 ) { @@ -1880,7 +1884,7 @@ void komodo_args(char *argv0) fprintf(stderr,"-ac_script and -ac_marmara are mutually exclusive\n"); exit(0); } - if ( ASSETCHAINS_ENDSUBSIDY[0] != 0 || ASSETCHAINS_REWARD[0] != 0 || ASSETCHAINS_HALVING[0] != 0 || ASSETCHAINS_DECAY[0] != 0 || ASSETCHAINS_COMMISSION != 0 || ASSETCHAINS_PUBLIC != 0 || ASSETCHAINS_PRIVATE != 0 || ASSETCHAINS_TXPOW != 0 || ASSETCHAINS_FOUNDERS != 0 || ASSETCHAINS_SCRIPTPUB.size() > 1 || ASSETCHAINS_SELFIMPORT.size() > 0 || ASSETCHAINS_OVERRIDE_PUBKEY33[0] != 0 || ASSETCHAINS_TIMELOCKGTE != _ASSETCHAINS_TIMELOCKOFF|| ASSETCHAINS_ALGO != ASSETCHAINS_EQUIHASH || ASSETCHAINS_LWMAPOS != 0 || ASSETCHAINS_LASTERA > 0 || ASSETCHAINS_BEAMPORT != 0 || ASSETCHAINS_CODAPORT != 0 || ASSETCHAINS_MARMARA != 0 ) + if ( ASSETCHAINS_ENDSUBSIDY[0] != 0 || ASSETCHAINS_REWARD[0] != 0 || ASSETCHAINS_HALVING[0] != 0 || ASSETCHAINS_DECAY[0] != 0 || ASSETCHAINS_COMMISSION != 0 || ASSETCHAINS_PUBLIC != 0 || ASSETCHAINS_PRIVATE != 0 || ASSETCHAINS_TXPOW != 0 || ASSETCHAINS_FOUNDERS != 0 || ASSETCHAINS_SCRIPTPUB.size() > 1 || ASSETCHAINS_SELFIMPORT.size() > 0 || ASSETCHAINS_OVERRIDE_PUBKEY33[0] != 0 || ASSETCHAINS_TIMELOCKGTE != _ASSETCHAINS_TIMELOCKOFF|| ASSETCHAINS_ALGO != ASSETCHAINS_EQUIHASH || ASSETCHAINS_LWMAPOS != 0 || ASSETCHAINS_LASTERA > 0 || ASSETCHAINS_BEAMPORT != 0 || ASSETCHAINS_CODAPORT != 0 || ASSETCHAINS_MARMARA != 0 || nonz > 0 ) { fprintf(stderr,"perc %.4f%% ac_pub=[%02x%02x%02x...] acsize.%d\n",dstr(ASSETCHAINS_COMMISSION)*100,ASSETCHAINS_OVERRIDE_PUBKEY33[0],ASSETCHAINS_OVERRIDE_PUBKEY33[1],ASSETCHAINS_OVERRIDE_PUBKEY33[2],(int32_t)ASSETCHAINS_SCRIPTPUB.size()); extraptr = extrabuf; @@ -1956,6 +1960,11 @@ void komodo_args(char *argv0) extraptr[extralen++] = 'c'; if ( ASSETCHAINS_MARMARA != 0 ) extraptr[extralen++] = ASSETCHAINS_MARMARA; + if ( nonz > 0 ) + { + memcpy(&extraptr[extralen],disablebits,sizeof(disablebits)); + extralen += sizeof(disablebits); + } } addn = GetArg("-seednode",""); From 70fba21c4681a0d2a23166694ac4fc89f4f2db21 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 19 Jan 2019 00:50:51 -1100 Subject: [PATCH 4/7] SETBIT --- src/komodo_defs.h | 4 ++++ src/komodo_utils.h | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/komodo_defs.h b/src/komodo_defs.h index bd516be61..91fcadddb 100644 --- a/src/komodo_defs.h +++ b/src/komodo_defs.h @@ -30,6 +30,10 @@ #define KOMODO_SAPLING_DEADLINE 1550188800 // Feb 15th, 2019 #define _COINBASE_MATURITY 100 +#define SETBIT(bits,bitoffset) (((uint8_t *)bits)[(bitoffset) >> 3] |= (1 << ((bitoffset) & 7))) +#define GETBIT(bits,bitoffset) (((uint8_t *)bits)[(bitoffset) >> 3] & (1 << ((bitoffset) & 7))) +#define CLEARBIT(bits,bitoffset) (((uint8_t *)bits)[(bitoffset) >> 3] &= ~(1 << ((bitoffset) & 7))) + extern uint8_t ASSETCHAINS_TXPOW,ASSETCHAINS_PUBLIC; int32_t MAX_BLOCK_SIZE(int32_t height); diff --git a/src/komodo_utils.h b/src/komodo_utils.h index e074bd4c0..cb2ea7a1e 100644 --- a/src/komodo_utils.h +++ b/src/komodo_utils.h @@ -1786,7 +1786,7 @@ void komodo_args(char *argv0) if ( ccenables[i] != 0 ) { nonz++; - fprintf(stderr,"%d ",ccenables[i]); + fprintf(stderr,"%d ",(uint8_t)(ccenables[i] & 0xff)); } } fprintf(stderr,"nonz.%d ccenables[]\n",nonz); From ac9bd541b4c32e8971d1a740813bda0ad08409d5 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 19 Jan 2019 00:57:55 -1100 Subject: [PATCH 5/7] Require cc for ccenable --- src/komodo_utils.h | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/komodo_utils.h b/src/komodo_utils.h index cb2ea7a1e..1352c5bf7 100644 --- a/src/komodo_utils.h +++ b/src/komodo_utils.h @@ -1780,24 +1780,27 @@ void komodo_args(char *argv0) ASSETCHAINS_BEAMPORT = GetArg("-ac_beam",0); ASSETCHAINS_CODAPORT = GetArg("-ac_coda",0); ASSETCHAINS_MARMARA = GetArg("-ac_marmara",0); - Split(GetArg("-ac_ccenable",""), ccenables, 0); - for (i=nonz=0; i<0x100; i++) + if ( ASSETCHAINS_CC != 0 ) { - if ( ccenables[i] != 0 ) + Split(GetArg("-ac_ccenable",""), ccenables, 0); + for (i=nonz=0; i<0x100; i++) { - nonz++; - fprintf(stderr,"%d ",(uint8_t)(ccenables[i] & 0xff)); + if ( ccenables[i] != 0 ) + { + nonz++; + fprintf(stderr,"%d ",(uint8_t)(ccenables[i] & 0xff)); + } } - } - fprintf(stderr,"nonz.%d ccenables[]\n",nonz); - if ( nonz > 0 ) - { - for (i=0; i<256; i++) - ASSETCHAINS_CCDISABLES[i] = 1; - for (i=0; i<256; i++) + fprintf(stderr,"nonz.%d ccenables[]\n",nonz); + if ( nonz > 0 ) { - SETBIT(disablebits,i); - ASSETCHAINS_CCDISABLES[ccenables[i] & 0xff] = 0; + for (i=0; i<256; i++) + ASSETCHAINS_CCDISABLES[i] = 1; + for (i=0; i<256; i++) + { + SETBIT(disablebits,i); + ASSETCHAINS_CCDISABLES[ccenables[i] & 0xff] = 0; + } } } if ( ASSETCHAINS_BEAMPORT != 0 && ASSETCHAINS_CODAPORT != 0 ) From 3ab60f65c75e8d3ef3681920e8a21b3ba20cf54f Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 19 Jan 2019 01:00:51 -1100 Subject: [PATCH 6/7] Fix disable bits --- src/komodo_utils.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/komodo_utils.h b/src/komodo_utils.h index 1352c5bf7..ea1741d5a 100644 --- a/src/komodo_utils.h +++ b/src/komodo_utils.h @@ -1798,7 +1798,7 @@ void komodo_args(char *argv0) ASSETCHAINS_CCDISABLES[i] = 1; for (i=0; i<256; i++) { - SETBIT(disablebits,i); + SETBIT(disablebits,(ccenables[i] & 0xff)); ASSETCHAINS_CCDISABLES[ccenables[i] & 0xff] = 0; } } From 37019a6438e46c6f247a2ff0990725381a93d1eb Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 19 Jan 2019 01:02:53 -1100 Subject: [PATCH 7/7] Fix bits --- src/komodo_utils.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/komodo_utils.h b/src/komodo_utils.h index ea1741d5a..eb6134ffe 100644 --- a/src/komodo_utils.h +++ b/src/komodo_utils.h @@ -1795,10 +1795,13 @@ void komodo_args(char *argv0) if ( nonz > 0 ) { for (i=0; i<256; i++) + { ASSETCHAINS_CCDISABLES[i] = 1; + SETBIT(disablebits,i); + } for (i=0; i<256; i++) { - SETBIT(disablebits,(ccenables[i] & 0xff)); + CLEARBIT(disablebits,(ccenables[i] & 0xff)); ASSETCHAINS_CCDISABLES[ccenables[i] & 0xff] = 0; } }