|
|
|
/******************************************************************************
|
|
|
|
* Copyright © 2014-2016 The SuperNET Developers. *
|
|
|
|
* *
|
|
|
|
* See the AUTHORS, DEVELOPER-AGREEMENT and LICENSE files at *
|
|
|
|
* the top-level directory of this distribution for the individual copyright *
|
|
|
|
* holder information and the developer policies on copyright and licensing. *
|
|
|
|
* *
|
|
|
|
* Unless otherwise agreed in a custom licensing agreement, no part of the *
|
|
|
|
* SuperNET software, including this file may be copied, modified, propagated *
|
|
|
|
* or distributed except according to the terms contained in the LICENSE file *
|
|
|
|
* *
|
|
|
|
* Removal or modification of this copyright notice is prohibited. *
|
|
|
|
* *
|
|
|
|
******************************************************************************/
|
|
|
|
|
|
|
|
#ifndef INCLUDE_DPOW_H
|
|
|
|
#define INCLUDE_DPOW_H
|
|
|
|
|
|
|
|
#define DPOW_M(bp) (4) // (((bp)->numnotaries >> 1) + 1)
|
|
|
|
#define DPOW_VERSION 0x01
|
|
|
|
#define DPOW_UTXOSIZE 10000
|
|
|
|
|
|
|
|
#define DPOW_FIFOSIZE 64
|
|
|
|
#define DPOW_MAXTX 8192
|
|
|
|
#define DPOW_THIRDPARTY_CONFIRMS 10
|
|
|
|
#define DPOW_KOMODOCONFIRMS 1
|
|
|
|
#define DPOW_BTCCONFIRMS 1
|
|
|
|
#define DPOW_MAXRELAYS 64
|
|
|
|
#define DPOW_CHECKPOINTFREQ 5
|
|
|
|
|
|
|
|
struct dpow_entry
|
|
|
|
{
|
|
|
|
bits256 prev_hash,commit,beacon;
|
|
|
|
uint64_t masks[DPOW_MAXRELAYS],bestmask;
|
|
|
|
int32_t prev_vout,height;
|
|
|
|
int8_t bestk;
|
|
|
|
uint8_t pubkey[33],siglens[DPOW_MAXRELAYS],sigs[DPOW_MAXRELAYS][76];
|
|
|
|
};
|
|
|
|
|
|
|
|
struct dpow_sigentry
|
|
|
|
{
|
|
|
|
bits256 beacon;
|
|
|
|
uint64_t mask;
|
|
|
|
int32_t refcount;
|
|
|
|
uint8_t senderind,lastk,siglen,sig[80],senderpub[33];
|
|
|
|
};
|
|
|
|
|
|
|
|
struct komodo_notaries
|
|
|
|
{
|
|
|
|
struct basilisk_relay RELAYS[DPOW_MAXRELAYS];
|
|
|
|
int32_t NUMRELAYS,RELAYID;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct dpow_hashheight { bits256 hash; int32_t height; };
|
|
|
|
|
|
|
|
struct dpow_checkpoint { struct dpow_hashheight blockhash,approved; bits256 miner; uint32_t blocktime,timestamp; };
|
|
|
|
|
|
|
|
struct dpow_block
|
|
|
|
{
|
|
|
|
bits256 hashmsg,btctxid,signedtxid,beacon,commit;
|
|
|
|
struct iguana_info *coin; char *opret_symbol;
|
|
|
|
uint64_t recvmask,bestmask;
|
|
|
|
struct dpow_entry notaries[DPOW_MAXRELAYS];
|
|
|
|
uint32_t state,timestamp,waiting,sigcrcs[2],txidcrcs[2],utxocrcs[2];
|
|
|
|
int32_t height,numnotaries,completed;
|
|
|
|
int8_t bestk;
|
|
|
|
char signedtx[32768];
|
|
|
|
};
|
|
|
|
|
|
|
|
struct dpow_info
|
|
|
|
{
|
|
|
|
char symbol[16],dest[16]; uint8_t minerkey33[33],minerid;
|
|
|
|
struct dpow_checkpoint checkpoint,last,destchaintip,srcfifo[DPOW_FIFOSIZE],destfifo[DPOW_FIFOSIZE];
|
|
|
|
struct dpow_hashheight approved[DPOW_FIFOSIZE],notarized[DPOW_FIFOSIZE];
|
|
|
|
bits256 srctx[DPOW_MAXTX],desttx[DPOW_MAXTX];
|
|
|
|
uint32_t destupdated,srcconfirms,numdesttx,numsrctx,lastsplit;
|
|
|
|
struct dpow_block **srcblocks,**destblocks;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|