示例#1
0
static bool work_decode(const json_t *val, struct work *work)
{
	if (!jobj_binary(val, "midstate",
			 work->midstate, sizeof(work->midstate))) {
		fprintf(stderr, "JSON inval midstate\n");
		goto err_out;
	}

	if (!jobj_binary(val, "data", work->data, sizeof(work->data))) {
		fprintf(stderr, "JSON inval data\n");
		goto err_out;
	}

	if (!jobj_binary(val, "hash1", work->hash1, sizeof(work->hash1))) {
		fprintf(stderr, "JSON inval hash1\n");
		goto err_out;
	}

	if (!jobj_binary(val, "target", work->target, sizeof(work->target))) {
		fprintf(stderr, "JSON inval target\n");
		goto err_out;
	}

	memset(work->hash, 0, sizeof(work->hash));

	return true;

err_out:
	return false;
}
示例#2
0
bool std_work_decode( const json_t *val, struct work *work)
{
    int i;
    int data_size   = sizeof(work->data);
    int target_size = sizeof(work->target);
    int adata_sz    = ARRAY_SIZE(work->data);
    int atarget_sz  = ARRAY_SIZE(work->target);
 
    algo_gate.set_data_and_target_size( &data_size, &target_size,
            &adata_sz,  &atarget_sz, &allow_mininginfo );

    if (jsonrpc_2)
        return rpc2_job_decode(val, work);

    if (unlikely(!jobj_binary(val, "data", work->data, data_size)))
    {
       applog(LOG_ERR, "JSON invalid data");
       return false;
    }
    if (unlikely(!jobj_binary(val, "target", work->target, target_size)))
    {
       applog(LOG_ERR, "JSON invalid target");
       return false;
     }

     for (i = 0; i < adata_sz; i++)
           work->data[i] = le32dec(work->data + i);
     for (i = 0; i < atarget_sz; i++)
           work->target[i] = le32dec(work->target + i);
     return true;
}
示例#3
0
文件: cpu-miner.c 项目: btwo/cpuminer
static bool work_decode(const json_t *val, struct work *work)
{
	if (unlikely(!jobj_binary(val, "data", work->data, sizeof(work->data)))) {
		applog(LOG_ERR, "JSON inval data");
		goto err_out;
	}

	if (unlikely(!jobj_binary(val, "target", work->target, sizeof(work->target)))) {
		applog(LOG_ERR, "JSON inval target");
		goto err_out;
	}

	memset(work->hash, 0, sizeof(work->hash));

	return true;

err_out:
	return false;
}