コード例 #1
0
ファイル: crypto777.c プロジェクト: jonesnxt/SuperNET_API
struct consensus_model *create_genesis(uint64_t PoW_diff,int32_t blockduration,int32_t leverage,uint64_t *stakes,int32_t num)
{
    struct consensus_model *mp = calloc(1,sizeof(*mp));
    struct crypto777_generator gen;
    struct crypto777_ledger *ledger = 0;
    uint32_t i,blocknum = 0;
    bits384 prev;
    mp->genesis_timestamp = (uint32_t)time(NULL);
    if ( stakes != 0 )
    {
        ledger = calloc(1,sizeof(*ledger));
        ledger->num = num, ledger->timestamp = mp->genesis_timestamp;
        strncpy(ledger->name,"stakeledger",sizeof(ledger->name)-1);
        for (i=0; i<num; i++)
            ledger->vals[i] = stakes[i];
        mp->stakeledger = *ledger;
        free(ledger);
    } else mp->stakeid = MODEL_ROUNDROBIN;
    memset(prev.bytes,0,sizeof(prev));
    mp->POW_DIFF = PoW_diff, mp->blockduration = blockduration, mp->packet_leverage = leverage;
    memset(&prev,0,sizeof(prev));
    calc_generator(&gen,calc_stake(0,mp),"",0,0,prev,mp->POW_DIFF);
    mp->blocks[0] = sign_block(Network[0],&gen,0,0,blocknum,mp->genesis_timestamp);
    return(mp);
}
コード例 #2
0
ファイル: crypto777.c プロジェクト: jonesnxt/SuperNET_API
struct crypto777_block *generate_block(struct consensus_model *model,struct crypto777_node *nn,uint8_t *msg,int32_t len,uint32_t blocknum,uint32_t timestamp)
{
    struct crypto777_generator gen;
    struct crypto777_block *prev,*block = 0;
    if ( (prev= model->blocks[blocknum-1]) != 0 )
    {
        calc_generator(&gen,calc_stake(nn,model),nn->email,timestamp,prev->gen.metric,prev->gen.hash,model->POW_DIFF);
        //printf("node.%d GENERATE.%d %.8f (%.8f + prev %.8f)\n",nn->nodeid,blocknum,dstr(gen.metric),dstr(gen.hit),dstr(prev->gen.metric));
        block = sign_block(nn,&gen,msg,len,blocknum,timestamp);
        update_block(model,nn,model->blocks,blocknum,block,timestamp);
    }
    return(block);
}
コード例 #3
0
ファイル: crypt.cpp プロジェクト: AltroCoin/altrocoin
// compute an XML signature element for some text
//
int generate_signature(
    char* text_to_sign, char* signature_hex, R_RSA_PRIVATE_KEY& key
)  {
    DATA_BLOCK block, signature_data;
    unsigned char signature_buf[SIGNATURE_SIZE_BINARY];
    int retval;

    block.data = (unsigned char*)text_to_sign;
    block.len = (unsigned int)strlen(text_to_sign);
    signature_data.data = signature_buf;
    signature_data.len = SIGNATURE_SIZE_BINARY;
    retval = sign_block(block, key, signature_data);
    if (retval) return retval;
    sprint_hex_data(signature_hex, signature_data);
    return 0;
}