Add blkmk_append_coinbase_safe2 which can understand mdata use
This commit is contained in:
17
blkmaker.c
17
blkmaker.c
@@ -242,12 +242,21 @@ bool _blkmk_append_cb(blktemplate_t * const tmpl, void * const vout, const void
|
||||
return true;
|
||||
}
|
||||
|
||||
ssize_t blkmk_append_coinbase_safe(blktemplate_t *tmpl, const void *append, size_t appendsz) {
|
||||
ssize_t blkmk_append_coinbase_safe2(blktemplate_t * const tmpl, const void * const append, const size_t appendsz, int extranoncesz, const bool merkle_only)
|
||||
{
|
||||
if (!(tmpl->mutations & (BMM_CBAPPEND | BMM_CBSET)))
|
||||
return -1;
|
||||
|
||||
size_t datasz = tmpl->cbtxn->datasz;
|
||||
size_t availsz = 100 - sizeof(unsigned int) - tmpl->cbtxn->data[cbScriptSigLen];
|
||||
if (!merkle_only)
|
||||
{
|
||||
if (extranoncesz < sizeof(unsigned int))
|
||||
extranoncesz = sizeof(unsigned int);
|
||||
else
|
||||
if (extranoncesz == sizeof(unsigned int))
|
||||
++extranoncesz;
|
||||
}
|
||||
size_t availsz = 100 - extranoncesz - tmpl->cbtxn->data[cbScriptSigLen];
|
||||
if (appendsz > availsz)
|
||||
return availsz;
|
||||
|
||||
@@ -263,6 +272,10 @@ ssize_t blkmk_append_coinbase_safe(blktemplate_t *tmpl, const void *append, size
|
||||
return availsz;
|
||||
}
|
||||
|
||||
ssize_t blkmk_append_coinbase_safe(blktemplate_t * const tmpl, const void * const append, const size_t appendsz) {
|
||||
return blkmk_append_coinbase_safe2(tmpl, append, appendsz, 0, false);
|
||||
}
|
||||
|
||||
bool _blkmk_extranonce(blktemplate_t *tmpl, void *vout, unsigned int workid, size_t *offs) {
|
||||
unsigned char *in = tmpl->cbtxn->data;
|
||||
size_t insz = tmpl->cbtxn->datasz;
|
||||
|
||||
@@ -16,6 +16,7 @@ extern uint64_t blkmk_init_generation(blktemplate_t *, void *script, size_t scri
|
||||
extern uint64_t blkmk_init_generation2(blktemplate_t *, void *script, size_t scriptsz, bool *out_newcb);
|
||||
extern uint64_t blkmk_init_generation3(blktemplate_t *, const void *script, size_t scriptsz, bool *inout_newcb);
|
||||
extern ssize_t blkmk_append_coinbase_safe(blktemplate_t *, const void *append, size_t appendsz);
|
||||
extern ssize_t blkmk_append_coinbase_safe2(blktemplate_t *, const void *append, size_t appendsz, int extranoncesz, bool merkle_only);
|
||||
extern bool _blkmk_extranonce(blktemplate_t *tmpl, void *vout, unsigned int workid, size_t *offs);
|
||||
extern size_t blkmk_get_data(blktemplate_t *, void *buf, size_t bufsz, time_t usetime, int16_t *out_expire, unsigned int *out_dataid);
|
||||
extern bool blkmk_get_mdata(blktemplate_t *, void *buf, size_t bufsz, time_t usetime, int16_t *out_expire, void *out_cbtxn, size_t *out_cbtxnsz, size_t *cbextranonceoffset, int *out_branchcount, void *out_branches, size_t extranoncesz);
|
||||
|
||||
Reference in New Issue
Block a user