@@ -495,9 +495,19 @@ int32_t komodo_gateway_deposits(CMutableTransaction *txNew,char *base,int32_t to
495495 continue ;
496496 {
497497#ifdef KOMODO_ASSETCHAINS_WAITNOTARIZE
498- if ( kmdsp != 0 && (kmdsp -> NOTARIZED_HEIGHT >= pax -> height || kmdsp -> CURRENT_HEIGHT > pax -> height + 30 ) ) // assumes same chain as notarize
499- pax -> validated = pax -> komodoshis ; //kmdsp->NOTARIZED_HEIGHT;
500- else pax -> validated = pax -> ready = 0 ;
498+ if ( pax -> height > 236000 )
499+ {
500+ if ( kmdsp != 0 && kmdsp -> NOTARIZED_HEIGHT >= pax -> height )
501+ pax -> validated = pax -> komodoshis ;
502+ else if ( kmdsp -> CURRENT_HEIGHT > pax -> height + 30 )
503+ pax -> validated = pax -> ready = 0 ;
504+ }
505+ else
506+ {
507+ if ( kmdsp != 0 && (kmdsp -> NOTARIZED_HEIGHT >= pax -> height || kmdsp -> CURRENT_HEIGHT > pax -> height + 30 ) ) // assumes same chain as notarize
508+ pax -> validated = pax -> komodoshis ;
509+ else pax -> validated = pax -> ready = 0 ;
510+ }
501511#else
502512 pax -> validated = pax -> komodoshis ;
503513#endif
@@ -588,20 +598,77 @@ int32_t komodo_gateway_deposits(CMutableTransaction *txNew,char *base,int32_t to
588598 return (0 );
589599}
590600
601+ const char * banned_txids [] =
602+ {
603+ "78cb4e21245c26b015b888b14c4f5096e18137d2741a6de9734d62b07014dfca" , //233559
604+ "00697be658e05561febdee1aafe368b821ca33fbb89b7027365e3d77b5dfede5" , //234172
605+ "e909465788b32047c472d73e882d79a92b0d550f90be008f76e1edaee6d742ea" , //234187
606+ "f56c6873748a327d0b92b8108f8ec8505a2843a541b1926022883678fb24f9dc" , //234188
607+ "abf08be07d8f5b3a433ddcca7ef539e79a3571632efd6d0294ec0492442a0204" , //234213
608+ "3b854b996cc982fba8c06e76cf507ae7eed52ab92663f4c0d7d10b3ed879c3b0" , //234367
609+ "fa9e474c2cda3cb4127881a40eb3f682feaba3f3328307d518589024a6032cc4" , //234635
610+ "ca746fa13e0113c4c0969937ea2c66de036d20274efad4ce114f6b699f1bc0f3" , //234662
611+ "43ce88438de4973f21b1388ffe66e68fda592da38c6ef939be10bb1b86387041" , //234697
612+ "0aeb748de82f209cd5ff7d3a06f65543904c4c17387c9d87c65fd44b14ad8f8c" , //234899
613+ "bbd3a3d9b14730991e1066bd7c626ca270acac4127131afe25f877a5a886eb25" , //235252
614+ "fa9943525f2e6c32cbc243294b08187e314d83a2870830180380c3c12a9fd33c" , //235253
615+ "a01671c8775328a41304e31a6693bbd35e9acbab28ab117f729eaba9cb769461" , //235265
616+ "2ef49d2d27946ad7c5d5e4ab5c089696762ff04e855f8ab48e83bdf0cc68726d" , //235295
617+ "c85dcffb16d5a45bd239021ad33443414d60224760f11d535ae2063e5709efee" , //235296
618+ };
619+
620+ void komodo_bannedset (uint256 * array ,int32_t max )
621+ {
622+ int32_t i ;
623+ for (i = 0 ; i < sizeof (banned_txids )/sizeof (* banned_txids ); i ++ )
624+ array [i ] = uint256S (banned_txids [i ]);
625+ if ( i != max )
626+ printf ("banned txid array error i.%d != max.%d\n" ,i ,max );
627+ //else printf("set %d banned txids\n",max);
628+ }
629+
591630int32_t komodo_check_deposit (int32_t height ,const CBlock & block ) // verify above block is valid pax pricing
592631{
593- int32_t i ,j ,n ,ht ,num ,opretlen ,offset = 1 ,errs = 0 ,matched = 0 ,kmdheights [64 ],otherheights [64 ]; uint256 hash ,txids [64 ]; char symbol [16 ],base [16 ]; uint16_t vouts [64 ]; int8_t baseids [64 ]; uint8_t * script ,opcode ,rmd160s [64 * 20 ]; uint64_t available ,deposited ,issued ,withdrawn ,approved ,redeemed ; int64_t values [64 ],srcvalues [64 ]; struct pax_transaction * pax ; struct komodo_state * sp ;
594- if ( KOMODO_PAX == 0 || komodo_isrealtime (& ht ) == 0 || KOMODO_PASSPORT_INITDONE == 0 )
595- return (0 );
632+ static uint256 array [15 ];
633+ int32_t i ,j ,k ,n ,ht ,txn_count ,num ,opretlen ,offset = 1 ,errs = 0 ,matched = 0 ,kmdheights [64 ],otherheights [64 ]; uint256 hash ,txids [64 ]; char symbol [16 ],base [16 ]; uint16_t vouts [64 ]; int8_t baseids [64 ]; uint8_t * script ,opcode ,rmd160s [64 * 20 ]; uint64_t available ,deposited ,issued ,withdrawn ,approved ,redeemed ; int64_t values [64 ],srcvalues [64 ]; struct pax_transaction * pax ; struct komodo_state * sp ;
634+ if ( * (int32_t * )& array [0 ] == 0 )
635+ komodo_bannedset (array ,(int32_t )(sizeof (array )/sizeof (* array )));
596636 memset (baseids ,0xff ,sizeof (baseids ));
597637 memset (values ,0 ,sizeof (values ));
598638 memset (srcvalues ,0 ,sizeof (srcvalues ));
599639 memset (rmd160s ,0 ,sizeof (rmd160s ));
600640 memset (kmdheights ,0 ,sizeof (kmdheights ));
601641 memset (otherheights ,0 ,sizeof (otherheights ));
642+ txn_count = block .vtx .size ();
643+ for (i = 0 ; i < txn_count ; i ++ )
644+ {
645+ n = block .vtx [i ].vin .size ();
646+ for (j = 0 ; j < n ; j ++ )
647+ {
648+ for (k = 0 ; k < sizeof (array )/sizeof (* array ); k ++ )
649+ {
650+ if ( block .vtx [i ].vin [j ].prevout .hash == array [k ] && block .vtx [i ].vin [j ].prevout .n == 1 )
651+ {
652+ printf ("banned tx.%d being used at ht.%d txi.%d vini.%d\n" ,k ,height ,i ,j );
653+ return (-1 );
654+ }
655+ }
656+ }
657+ }
602658 n = block .vtx [0 ].vout .size ();
603659 script = (uint8_t * )block .vtx [0 ].vout [n - 1 ].scriptPubKey .data ();
604660 if ( n <= 2 || script [0 ] != 0x6a )
661+ {
662+ if ( n == 2 && block .vtx [0 ].vout [1 ].nValue > COIN /10 )
663+ {
664+ //fprintf(stderr,">>>>>>>> <<<<<<<<<< ht.%d illegal nonz output %.8f n.%d\n",height,dstr(block.vtx[0].vout[1].nValue),n);
665+ if ( height >= 235300 )
666+ return (-1 );
667+ }
668+ return (0 );
669+ }
670+ //fprintf(stderr,"ht.%d n.%d nValue %.8f (%d %d %d)\n",height,n,dstr(block.vtx[0].vout[1].nValue),KOMODO_PAX,komodo_isrealtime(&ht),KOMODO_PASSPORT_INITDONE);
671+ if ( komodo_isrealtime (& ht ) == 0 || KOMODO_PASSPORT_INITDONE == 0 ) //KOMODO_PAX == 0 ||
605672 return (0 );
606673 offset += komodo_scriptitemlen (& opretlen ,& script [offset ]);
607674 if ( ASSETCHAINS_SYMBOL [0 ] == 0 )
@@ -700,8 +767,18 @@ int32_t komodo_check_deposit(int32_t height,const CBlock& block) // verify above
700767 }
701768 }
702769 }
770+ else
771+ {
772+ printf ("no opreturn entries to check\n" );
773+ return (-1 );
774+ }
703775 //printf("opretlen.%d num.%d\n",opretlen,num);
704776 }
777+ else
778+ {
779+ printf ("not proper vout with opreturn format\n" );
780+ return (-1 );
781+ }
705782 return (0 );
706783}
707784
0 commit comments