Browse Source

test

release/v0.1
jl777 9 years ago
parent
commit
8c59c5b2e6
  1. 68
      iguana/iguana_interpreter.c
  2. 4
      iguana/iguana_payments.c
  3. 1
      iguana/iguana_sign.c
  4. 4
      iguana/iguana_wallet.c
  5. 9
      iguana/main.c
  6. 2
      iguana/tests/signrawtransaction

68
iguana/iguana_interpreter.c

@ -406,7 +406,7 @@ struct iguana_interpreter
cJSON *logarray;
struct iguana_stackdata stack[];
};
static struct bitcoin_opcode { UT_hash_handle hh; uint8_t opcode,flags,stackitems; int8_t extralen; } *optable;
static struct bitcoin_opcode { UT_hash_handle hh; uint8_t opcode,flags,stackitems; int8_t extralen; } *optable; static char *OPCODES[0x100]; static int32_t OPCODELENS[0x100];
static struct iguana_stackdata iguana_pop(struct iguana_interpreter *stacks)
{
@ -754,9 +754,63 @@ int32_t iguana_checksequenceverify(struct iguana_info *coin,int64_t nLockTime,ui
int32_t iguana_expandscript(struct iguana_info *coin,char *asmstr,int32_t maxlen,uint8_t *script,int32_t scriptlen)
{
asmstr[0] = 0;
return(0);
int32_t len,i = 0; uint8_t opcode; uint32_t val,extraflag;
asmstr[0] = len = 0;
while ( i < scriptlen )
{
val = extraflag = 0;
opcode = script[i++];
if ( opcode == OP_1NEGATE )
{
asmstr[len++] = '-';
asmstr[len++] = '1';
}
else if ( opcode == OP_0 )
{
strcpy(&asmstr[len],"OP_FALSE");
len += 8;
}
else if ( opcode >= OP_1 && opcode <= OP_16 )
{
sprintf(&asmstr[len],"%d",opcode - OP_1 + 1);
len += strlen(&asmstr[len]);
}
else
{
strcpy(&asmstr[len],OPCODES[opcode]);
len += OPCODELENS[opcode];
}
if ( i < scriptlen )
asmstr[len++] = ' ';
if ( opcode == OP_PUSHDATA1 )
{
sprintf(&asmstr[len],"%02x",script[i++]);
len += 2;
extraflag = 1;
}
else if ( opcode == OP_PUSHDATA2 )
{
val = script[i++];
val = (val << 8) | script[i++];
sprintf(&asmstr[len],"%04x",val);
len += 4;
extraflag = 1;
}
else if ( opcode == OP_PUSHDATA4 )
{
val = script[i++];
val = (val << 8) | script[i++];
val = (val << 8) | script[i++];
val = (val << 8) | script[i++];
sprintf(&asmstr[len],"%08x",val);
len += 8;
extraflag = 1;
}
if ( extraflag != 0 && i < scriptlen )
asmstr[len++] = ' ';
}
asmstr[len] = 0;
return(len);
}
cJSON *iguana_spendasm(struct iguana_info *coin,uint8_t *spendscript,int32_t spendlen)
@ -775,6 +829,8 @@ int32_t bitcoin_assembler(struct iguana_info *coin,uint8_t script[IGUANA_MAXSCRI
int32_t c,numops,numvars,numused,numargs,i,j,k,n,len,val,datalen,extralen,errs=0;
if ( optable == 0 )
{
for (i=0; i<0x100; i++)
OPCODES[i] = "OP_UNKNOWN";
for (i=0; i<0x100; i++)
{
extralen = stackitems = flags = 0;
@ -788,6 +844,8 @@ int32_t bitcoin_assembler(struct iguana_info *coin,uint8_t script[IGUANA_MAXSCRI
op->flags = flags;
op->stackitems = stackitems;
op->extralen = extralen;
OPCODES[i] = (char *)op->hh.key;
OPCODELENS[i] = (int32_t)strlen(OPCODES[i]);
}
}
//printf("bitcoin opcodes\n");
@ -1231,7 +1289,7 @@ int32_t bitcoin_assembler(struct iguana_info *coin,uint8_t script[IGUANA_MAXSCRI
}
else if ( iguana_isnonz(stacks->stack[--stacks->stackdepth]) != 0 )
{
printf("Evaluate true, depth.%d\n",stacks->stackdepth);
printf("Evaluate true, depth.%d errs.%d\n",stacks->stackdepth,errs);
jadd(interpreter,"result",jtrue());
}
if ( stacks->logarray != 0 )

4
iguana/iguana_payments.c

@ -718,7 +718,7 @@ ARRAY_OBJ_INT(bitcoinrpc,createrawtransaction,vins,vouts,locktime)
TWOINTS_AND_ARRAY(bitcoinrpc,listunspent,minconf,maxconf,array)
{
int32_t numrmds; uint8_t *rmdarray; cJSON *retjson = cJSON_CreateArray();
int32_t numrmds,numunspents=0; uint8_t *rmdarray; cJSON *retjson = cJSON_CreateArray();
if ( remoteaddr != 0 )
return(clonestr("{\"error\":\"no remote\"}"));
if ( minconf == 0 )
@ -726,7 +726,7 @@ TWOINTS_AND_ARRAY(bitcoinrpc,listunspent,minconf,maxconf,array)
if ( maxconf == 0 )
maxconf = 9999999;
rmdarray = iguana_rmdarray(coin,&numrmds,array,0);
iguana_unspents(myinfo,coin,retjson,minconf,maxconf,rmdarray,numrmds,0,0,0);
iguana_unspents(myinfo,coin,retjson,minconf,maxconf,rmdarray,numrmds,0,0,&numunspents);
if ( rmdarray != 0 )
free(rmdarray);
return(jprint(retjson,1));

1
iguana/iguana_sign.c

@ -801,6 +801,7 @@ int32_t iguana_vininfo_create(struct supernet_info *myinfo,struct iguana_info *c
msgtx->tx_in = numinputs;
maxsize -= (sizeof(struct iguana_msgvin) * msgtx->tx_in);
msgtx->vins = (struct iguana_msgvin *)&serialized[maxsize];
memset(msgtx->vins,0,sizeof(struct iguana_msgvin) * msgtx->tx_in);
if ( msgtx->tx_in > 0 && msgtx->tx_in*sizeof(struct iguana_msgvin) < maxsize )
{
for (i=0; i<msgtx->tx_in; i++)

4
iguana/iguana_wallet.c

@ -761,11 +761,11 @@ void iguana_walletlock(struct supernet_info *myinfo,struct iguana_info *coin)
int64_t iguana_waccountbalance(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_waccount *wacct,int32_t minconf,int32_t lastheight)
{
int64_t balance; int32_t numrmds=0; uint8_t *rmdarray=0;
int64_t balance; int32_t numrmds=0,numunspents = 0; uint8_t *rmdarray=0;
if ( minconf == 0 )
minconf = 1;
rmdarray = iguana_rmdarray(coin,&numrmds,getaddressesbyaccount(myinfo,coin,wacct->account),0);
balance = iguana_unspents(myinfo,coin,0,minconf,(1 << 30),rmdarray,numrmds,lastheight,0,0);
balance = iguana_unspents(myinfo,coin,0,minconf,(1 << 30),rmdarray,numrmds,lastheight,0,&numunspents);
if ( rmdarray != 0 )
free(rmdarray);
return(balance);

9
iguana/main.c

@ -1143,14 +1143,7 @@ void iguana_appletests(struct supernet_info *myinfo)
//iguana_chaingenesis(genesisblock,"sha256",1,1317972665,0x1e0ffff0,2084524493,bits256_conv("97ddfbbae6be97fd6cdf3e7ca13232a3afff2353e29badfab7f73011edd4ced9")); // LTC
if ( 1 )
{
/*btcd = iguana_coinadd("BTCD",0);
if ( btcd == 0 )
{
printf("error adding BTCD.%p\n",btcd);
exit(-1);
}
sleep(1);*/
if ( 0 && (str= SuperNET_JSON(myinfo,cJSON_Parse("{\"RELAY\":1,\"VALIDATE\":1,\"prefetchlag\":-1,\"agent\":\"iguana\",\"method\":\"addcoin\",\"startpend\":4,\"endpend\":4,\"services\":129,\"maxpeers\":64,\"newcoin\":\"BTCD\",\"active\":1,\"numhelpers\":4,\"poll\":1}"),0,myinfo->rpcport)) != 0 )
if ( 1 && (str= SuperNET_JSON(myinfo,cJSON_Parse("{\"RELAY\":1,\"VALIDATE\":1,\"prefetchlag\":-1,\"agent\":\"iguana\",\"method\":\"addcoin\",\"startpend\":4,\"endpend\":4,\"services\":129,\"maxpeers\":64,\"newcoin\":\"BTCD\",\"active\":1,\"numhelpers\":4,\"poll\":1}"),0,myinfo->rpcport)) != 0 )
{
free(str);
if ( 0 && (str= SuperNET_JSON(myinfo,cJSON_Parse("{\"userhome\":\"/Users/jimbolaptop/Library/Application Support\",\"agent\":\"iguana\",\"method\":\"addcoin\",\"services\":1024,\"maxpeers\":256,\"newcoin\":\"BTCD\",\"active\":1}"),0,myinfo->rpcport)) != 0 )

2
iguana/tests/signrawtransaction

@ -1,2 +1,2 @@
curl --url "http://127.0.0.1:7778" --data "{\"method\":\"signrawtransaction\",\"params\":[\"0100000095f4265701f6d17d847b7096cdd9b79e4df4b74aabb9ac34b7abd4f9fce19d761e97cca0e80000000000ffffffff0240420f00000000001976a91410acba3a841fae68aba4b5ff162714c493bcc04e88acd0300e00000000001976a914d8b8c039206af6cec82bca950f592801e62808cb88ac00000000\", [{\"txid\":\"e8a0cc971e769de1fcf9d4abb734acb9ab4ab7f44d9eb7d9cd96707b847dd1f6\",\"vout\":0,\"scriptPubKey\":\"2102d14a195654f536df6dfe5a38278d1b470d00f17de78eeb5ce9e9eea9edb2c212ac\"}], [\"UqvuZXEAVXDXJkL4j4Xq6qoMdeJfPF1aNsCzmzfZaQ1ZgBTwfmWn\"], \"ALL\"] }"
curl --url "http://127.0.0.1:7778" --data "{\"method\":\"signrawtransaction\",\"params\":[\"0100000086cc2c5701f6d17d847b7096cdd9b79e4df4b74aabb9ac34b7abd4f9fce19d761e97cca0e80000000000ffffffff0240420f00000000001976a91410acba3a841fae68aba4b5ff162714c493bcc04e88acd0300e00000000001976a914d8b8c039206af6cec82bca950f592801e62808cb88ac00000000\", [{\"txid\":\"e8a0cc971e769de1fcf9d4abb734acb9ab4ab7f44d9eb7d9cd96707b847dd1f6\",\"vout\":0,\"scriptPubKey\":\"2102d14a195654f536df6dfe5a38278d1b470d00f17de78eeb5ce9e9eea9edb2c212ac\"}], [\"UqvuZXEAVXDXJkL4j4Xq6qoMdeJfPF1aNsCzmzfZaQ1ZgBTwfmWn\"], \"ALL\"] }"

Loading…
Cancel
Save