Pages:
Author

Topic: [ANN][ICO][ADX]Iadix Coin POS Purenode 3D+HTML5 Blockchain, ICO COMING SOON (Read 6847 times)

full member
Activity: 322
Merit: 151
They're tactical
Ok so i have some good news and some bad news lol

The guy who was driving the ICO left the project, basically when i told him after month and month, once again, to make a timeline, and clarify his vision of the project beyond the ico funding rising, he told he left the project, i'm not sure i really understand his vision and motivation anyway, but we don't agree on too much things i guess and he left the project.

Well on the other side it doesn't matter too much, to explain shortly the situation, those two guy never made a website of their life, basically they are not developers, it took me 4 month to make them do the most basic CSS with many sweating and hard pushing, they have no experience in developing anything, and i struggled for month to try to get them to work on real roadmap and timeline and objective only to get same deflective answer .. Smiley

Basically this whole ICO thing was their plan, i was not super fond of the idea since the beginning, but they pushed me into it with their plan of ICO and investment and stuff, and then now he leave the project =)

But well it's why i took a break to re orient myself, because the only reason i came to this forum to begin with is because he told me about this ICO stuff, that it's easy, just copy paste wave website and paste some technical word and a non sense white paper and get investement without engagment, responsability, timeline, roadmap, most of the vauge text on the website is wrote by them, well i knew there was very little chance for this to be realistic but could always try, the time i develop the thing i wanted to get at with distributed application, could always try to do an ICO thing, but it didn't work has he planed, and now he leave without explaining anything too much except we don't agree or something =)




Well i will see what my plan is, it's why i took a bit a break to think things out, because now i'm alone on the project Smiley



But i still advanced more, reworked lot of the code, and cleaned the api to start working on the script engine, and it start to get good Smiley Much clearer code on the C side, and normally soon all the coin high level function should be made with the script.


And i also added system to create dynamic html page from node variable with the script, like this it's total killer to make html5 dynamic app.

with purenode.site file in the root web folder, and raw html template for page structure, node variables are added via the %% tag in the html_js opcode to generate the script for the page, and the script format the html and insert the value in the tags from these variable in the browser side.

It use the purenode block.js api and keys.js api.

Code:


let NODE_JSON_ARRAY stylesheets = `[
"//fonts.googleapis.com/css?family=Open+Sans:400,300,600&subset=cyrillic,latin",
"/assets/plugins/bootstrap/css/bootstrap.min.css",
"/assets/css/style.css",
"/assets/css/headers/header-default.css",
"/assets/css/blocks.css",
"/assets/css/footers/footer-v7.css",
"/assets/plugins/animate.css",
"/assets/plugins/line-icons/line-icons.css",
"/assets/plugins/font-awesome/css/font-awesome.min.css",
"/assets/plugins/brand-buttons/brand-buttons.css",
"/assets/css/theme-skins/dark.css",
"/assets/css/custom.css",
"/assets/plugins/sky-forms-pro/skyforms/css/sky-forms.css",
"/assets/plugins/sky-forms-pro/skyforms/custom/custom-sky-forms.css"
]`

let NODE_JSON_ARRAY scripts = `[
"/assets/plugins/jquery/jquery.min.js",
"/assets/plugins/jquery/jquery-migrate.min.js",
"/assets/plugins/bootstrap/js/bootstrap.min.js",
"/assets/plugins/back-to-top.js",
"/assets/plugins/smoothScroll.js",
"/assets/plugins/sky-forms-pro/skyforms/js/jquery-ui.min.js",
"/assets/plugins/sky-forms-pro/skyforms/js/jquery.validate.min.js",
"/assets/plugins/sky-forms-pro/skyforms/js/jquery.maskedinput.min.js",
"/assets/plugins/scrollbar/js/jquery.mCustomScrollbar.concat.min.js",
"/assets/js/custom.js",
"/assets/js/app.js"
]`

let NODE_JSON_ARRAY metas = `[
{"viewport":"width=device-width, initial-scale=1.0"},
{"description":""},
{"author":""}
]`


Code:

page blocks = `

push stylesheets,"/assets/css/plugins/blocks.css"
push scripts,"/assets/js/plugins/datepicker.js"
push scripts,"/assets/js/blocks.js"

html_head "PURENODE BLOCK EXPLORER"
html_block "templates/menu.html"
html_block "templates/blocks.html"
html_scripts

html_js
jQuery(document).ready(function ()
{
        App.init();
        App.initScrollBar();
        Datepicker.initDatepicker(function (selectedDate) { blk_page_idx = 0; tx_page_idx = 0; txs = null; blocks = null; list_blocks(selectedDate, blk_page_idx, 0); list_txs(selectedDate, tx_page_idx); });

        lang = 'en';
        api_base_url = '';
site_base_url = '/purenode.site';
        blk_page_idx = 0;
        tx_page_idx = 0;
        txs = null;
        blocks = null;
        selectedDate = $('#inline').datepicker({ dateFormat: 'yy-mm-dd' }).val();

        list_blocks(selectedDate, blk_page_idx, 0);
        list_txs(selectedDate, tx_page_idx);

    });
end_js

html_block "templates/footer.html"




Code:

page address(addr,page_idx) = `

push stylesheets,"/assets/css/plugins/blocks.css"
push scripts,"/assets/js/blocks.js"

html_head "PURENODE BLOCK EXPLORER ( ADDRESS )"
html_block "templates/menu.html"
html_block "templates/address.html"
html_scripts
html_js
$(document).ready(function ()
{
App.init();
App.initScrollBar();
site_base_url = '/purenode.site';
api_base_url ='';
currentAddr = '%addr%';
page_idx    = parseInt('%page_idx%');
lang = 'en';

$('#imp_addr').val(currentAddr);
list_addr_txs(currentAddr, page_idx);
});
end_js

html_block "templates/footer.html"

`




Code:

page wallet = `

push stylesheets,"/assets/css/plugins/blocks.css"
push scripts,"/assets/js/blocks.js"
push scripts,"/assets/js/ecdsa_bundle.js"
push scripts,"/assets/js/jsSHA-2.2.0/src/sha_dev.js"
push scripts,"/assets/js/keys.js"
push scripts,"/assets/js/md5.min.js"

html_head "PURENODE WALLET"
html_block "templates/menu.html"
html_block "templates/wallet.html"
html_scripts
html_js
    jQuery(document).ready(function() {
App.init ();

lang ='en';
api_base_url ='';
site_base_url ='/purenode.site';
ec = new EC('secp256k1');

$('#addrlabel').val('new address');
get_accounts ('my_address_list_table');

    });
end_js

html_block "templates/footer.html"
`







Those scripts are executed by the node, and have full access to the blockchain api modules, and can insert node variable in the javascript generation with the %% tags.


Like this it will become very easy to program distributed html5 apps.


For the moment i'm finishing this script and polishing the API, after it will pick a new name, and make yet another website lol But this time with real documentation, examples, download, sources etc more technically oriented, now that the API is getting cleaner and the script parser is version 0.1 i can start to write more focused documentation.

With the script it will be also easy to add the mempool and the p2p managment, so probably i'll end up running a beta coin in POW with it in the end lol

I will see, anyway i'll create a new thread with a new site and new plan in the coming weeks ! Smiley
newbie
Activity: 35
Merit: 0
Soon back, better and stronger with some cool stuff Smiley
full member
Activity: 322
Merit: 151
They're tactical
Awaiting the ICO take place, i started to work on a script engine to make it even easier to create blockchain and define node parameters to connect to other blockchain Smiley


Code:


let NODE_GFX_OBJECT configuration = `
{
"name":"purenode",

"seed_node" :
{
"host":"iadix.com",
"port" : 16714
},
"magic":0xD9BEFECA,
"version":60018,
"sign_mod":"ecdsa",
"pubKeyVersion":0x19,
"staking":
{
"targetspacing":64,
"targettimespan":960,
"stake reward":150000000,
"limit":0x1B00FFFF,
(NODE_MODULE_DEF) "pos_kernel" : {"file":"modz/stake_pos3.tpo"}
},
"mining":
{
"targetspacing":64,
"targettimespan":960,
"limit":0x1E0FFFFF,
"reward":10000000000000,
"last_pow_block":200,
"paytxfee":10000
},
"genesis":
{
"version" :1,
"time" :1466419085,
"bits" :0x1e0fffff,
"nonce" :579883,
"InitialStakeModifier":0,
"InitialStakeModifier2":0
}
}`

let NODE_BITCORE_NODE SelfNode = `
{
"user_agent" : "purenode",
"paytxfee" : 0,
(NODE_GFX_INT)"version"  : 0,
(NODE_BITCORE_BLK_HDR) "lastPOSBlk":null,
(NODE_BITCORE_BLK_HDR) "lastPOWBlk":null,
(NODE_BITCORE_ADDR)"p2p_addr" :
{
"services": 0,
(NODE_NET_IPV)"addr" : "127.0.0.1",
(NODE_GFX_SHORT)"port" : 16819
},
(NODE_BITCORE_WALLET_ADDR_LIST) "addr scan list" : null,
(NODE_BITCORE_MSG_LIST) "send queue" : [],
(NODE_BITCORE_MSG_LIST) "emitted_queue" : [],
(NODE_BITCORE_TX_LIST) "tx mem pool" : null,
(NODE_BITCORE_BLK_HDR_LIST) "submitted blocks" : null
}`


let NODE_MODULE_DEF node_adx = `{"order":2, "file" : "modz/node_adx.tpo"}`
let NODE_MODULE_DEF protocol_adx = `{"order":0, "file" : "modz/protocol_adx.tpo"}`
let NODE_MODULE_DEF iadixcoin = `{"order":3, "file" : "modz/iadixcoin.tpo"}`
let NODE_MODULE_DEF block_adx = `{"order":1, "file" : "modz/block_adx.tpo"}`


let NODE_BITCORE_NODE_LIST  peer_nodes  = `[]`
let NODE_BITCORE_BLK_HDR genesis_blk = `{}`
let NODE_GFX_INT ping_nonce = `1`


handler on_verack(node,payload) = ` node_adx.queue_ping_message(node) `

handler on_ping(node,payload) = ` node_adx.queue_pong_message(node,payload.nonce) `

handler on_pong(node, payload) = ` set node.synching = 1; `

handler on_version(node,payload) = `

set node.p2p_addr = payload.their_addr;
set node.p2p_addr.services = payload.services;

set node.my_addr = payload.my_addr;

set node.user_agent = payload.user_agent;
set node.version = payload.proto_ver;
set node.block_height = payload.last_blk;

node_adx.node_log_version_infos(node)

node_adx.queue_verack_message(node)


`

handler on_inv(node, payload) = `

node_adx.queue_getdata_message(node, payload.hashes)

`

handler on_addr(node, payload) = `

foreach payload.addrs node_adx.node_log_addr_infos

`

proc init_node = `

protocol_adx.init_protocol (configuration)
block_adx.init_blocks (configuration)

set SelfNode.version = configuration.version;

node_adx.node_init_self (SelfNode)
node_adx.node_load_block_indexes ()

loadmod (configuration.staking.pos_kernel)
configuration.staking.pos_kernel.init_pos (configuration.staking)

block_adx.make_genesis_block (configuration.genesis, genesis_blk)

if (SelfNode.block_height = 1)
node_adx.node_set_last_block (genesis_blk)
configuration.staking.pos_kernel.store_blk_staking  (genesis_blk)
endif

if (SelfNode.block_height > 1)
node_adx.node_load_last_blks()

configuration.staking.pos_kernel.load_last_pos_blk(SelfNode.lastPOSBlk) :

set SelfNode.lastPOSBlk = SelfNode.last_blk;

configuration.staking.pos_kernel.find_last_pos_block(SelfNode.lastPOSBlk)
configuration.staking.pos_kernel.store_last_pos_hash(SelfNode.lastPOSBlk)

configuration.staking.pos_kernel.compute_last_pos_diff(SelfNode.lastPOSBlk, SelfNode.current_pos_diff) :
set SelfNode.current_pos_diff = SelfNode.limit;
endor
endor
endif

sethandler SelfNode.emitted_queue{ "cmd=verack" } = on_verack;
sethandler SelfNode.emitted_queue{ "cmd=version" } = on_version;
sethandler SelfNode.emitted_queue{ "cmd=ping" } = on_ping;
sethandler SelfNode.emitted_queue{ "cmd=pong" } = on_pong;
sethandler SelfNode.emitted_queue{ "cmd=inv" } = on_inv;
sethandler SelfNode.emitted_queue{ "cmd=addr" } = on_addr;



node_adx.new_peer_node(configuration.seed_node, peer_nodes)
node_adx.queue_version_message(peer_nodes[0])
node_adx.queue_getaddr_message(peer_nodes[0])

`







For the moment it looks like this =)


Then from C code :

Code:
	load_script			("script.cc", &script_vars);
resolve_script_var (&script_vars,PTR_NULL, "init_node" , NODE_SCRIPT_PROC,&init_node_proc);
execute_script_proc     (&script_vars, &init_node_proc);


=>




In the next days i'll get into implementing the harder function with the script to check block headers and tx, but all the basics to manipulate event handlers based on network message is already there, and i already have all the code in C.


Like this the code for high level definition of node and protocol can be much cleaner =)


Next also is making a system to define the module associated with http services with the script with a definition like this

Code:
let NODE_GFX_OBJECT http_services = `
{
"port":16820,
"cgi" : [{"block explorer":{"index" : "/api/"   , (NODE_MODULE_DEF) "block_explorer" : {"file":"modz/block_explorer.tpo"}}}]
"rpc" : [{"walletRPC"   :{"index" : "/wallet/", (NODE_MODULE_DEF) "rpc_wallet"     : {"file":"modz/rpc_wallet.tpo"}}}],


}`

To have either cgi interface bound to http addresse like http://nodeip:port/api/method?param=value for the block explorer and the http/json/rpc api on http://nodeip:port/wallet/jsonrpc

And next, to recode the block explorer and wallet modules with this script, to make it easier to read and easier to add new function in the api, without to even have to recompile anything.

Those script can probably be easily compiled to assembler, and then to tpo module too, but for the moment it's simple interpreter Smiley

I will write also more documentation for the API and how the script work in the next week.

I guess tomorow or the day after the handler to deal with block validation should be ok.


Then i'll see a bit more how to define the http interface binding to modules, and how to recode the modules with the script Smiley


After this, i guess either the rest of the team is ready for the ICO, i'll probably launch a test coin because it's taking too much time Smiley


newbie
Activity: 35
Merit: 0
Yes, our dev is working hard and has a real vision of what must be a good blockchain.
We'll give you an ico date very soon, some few last things to prepare Smiley
hero member
Activity: 1162
Merit: 568
Hello Smiley

Some news from the developpment Smiley

i have put online the new block explorer :

http://iadix.com/ico/blocks/en

Which include a filter system, the api looks like this :

2&size>400">http://iadix.com/ico/api/blocks?height<86000&tx*>2&size>400



https://github.com/iadix/purenode/blob/master/block_explorer/block_explorer.c#L212


Code:
	

tree_manager_set_child_value_i64(result, "height", height);
tree_manager_set_child_value_i32(result, "size", size);
tree_manager_set_child_value_hash(result, "hash", block_hash);
tree_manager_set_child_value_i32(result, "confirmations", nblks-height);
tree_manager_set_child_value_i32(result, "time", time);
tree_manager_set_child_value_i32(result, "version", version);
tree_manager_set_child_value_i32(result, "bits", bits);
tree_manager_set_child_value_i32(result, "nonce", nonce);


for (qv = 0; req->query_vars[qv].value.len > 0; qv++)
{
if (!tree_node_keval_i64(result, &req->query_vars[qv]))
{
release_zone_ref(&block);
return 0;
}
}



I also added a mechanism to buffer blocks that are potentially orphaned, and being able to put a node on testing to test a few blocks and rollback the current chain to the fork point if the other chain is longer.

https://github.com/iadix/purenode/blob/master/purenode/main.c#L1182

Code:
if (testing>0)
{
hash_t lh;
int new_len,cur_len;

if (!tree_manager_get_child_value_hash(node, NODE_HASH("last_header_hash"), lh))
node_get_hash_idx(testing-1, lh);

tree_manager_create_node ("log", NODE_LOG_PARAMS, &log);
tree_manager_set_child_value_hash (&log, "ph", prevHash);
tree_manager_set_child_value_hash (&log, "lh", lh);
log_message (" testing block '%ph%' -- '%lh%'", &log);
release_zone_ref (&log);

if (memcmp_c(prevHash, lh, sizeof(hash_t)))
{
release_zone_ref(&header);
return 0;
}

new_len = node_add_block_header(node, &header);
cur_len = get_last_block_height();

tree_manager_create_node("log", NODE_LOG_PARAMS, &log);
tree_manager_set_child_value_i32(&log, "new_len", new_len);
tree_manager_set_child_value_i32(&log, "cur_len", cur_len);
log_message("testing chain at height : %new_len% - %cur_len%", &log);
release_zone_ref(&log);

if (new_len > cur_len)
{
mem_zone_ref last_blk = { PTR_NULL };
int n;
uint64_t lost_reward;

lost_reward = 0;
n = cur_len;
while ((n--) > testing)
{
char chash[65];
hash_t h;
uint64_t reward;

if (!node_get_hash_idx(n, h))continue;

n = 0;
while (n<32)
{
chash[n * 2 + 0] = hex_chars[h[n] >> 4];
chash[n * 2 + 1] = hex_chars[h[n] & 0x0F];
n++;
}
chash[64] = 0;

if (is_pow_block(chash))
reward=get_blockreward(n);
else
get_stake_reward(n, &reward);

lost_reward += reward;
}

tree_manager_create_node("log", NODE_LOG_PARAMS, &log);
tree_manager_set_child_value_i32(&log, "testing", testing);
log_message("truncate chain to height : %testing%", &log);
release_zone_ref(&log);

if(node_truncate_chain(testing))
{
if (tree_manager_find_child_node(&self_node, NODE_HASH("last pos block"), NODE_BITCORE_BLK_HDR, &last_blk))
{
unsigned int pBits;
if (compute_last_pos_diff(&last_blk, &pBits))
tree_manager_set_child_value_i32(&self_node, "current pos diff", pBits);
else
tree_manager_set_child_value_i32(&self_node, "current pos diff", 0x1FFFFFFF);

release_zone_ref(&last_blk);
}

sub_moneysupply (lost_reward);

log_output ("switching to new chain \n");
tree_manager_set_child_value_i32(node, "testing_chain", 0);
}
}
release_zone_ref(&header);
return 0;
}

if (!tree_manager_find_child_node(payload, NODE_HASH("txs"), NODE_BITCORE_TX_LIST, &tx_list)){ release_zone_ref(&header); return 1; }
if (!tree_manager_find_child_node(payload, NODE_HASH("signature"), NODE_BITCORE_ECDSA_SIG, &sig)){ release_zone_ref(&tx_list); release_zone_ref(&header); return 1; }
tree_manager_get_node_istr(&sig, 0, &signature, 0);
release_zone_ref(&sig);

ret = node_is_next_block (&header, &lastBlk);
if (!ret)
{
ret = check_node_chain(node, &header, &keep_block);
if (!ret)
{
free_string(&signature);
release_zone_ref(&header);
release_zone_ref(&tx_list);
return (keep_block==1)?0:1;
}
}


And also 2 command line parameters to rebuild local index and re validate local block chain, or looking for corrupt data.

Code:
launcher rebuildtxs

To recheck the block headers and tx indexes.

Code:
launcher rebuildsupply

To recheck block reward and proof of stake/proof of work to rebuild the money supply.


Additionally i started to write some more in depth documentation about the memory model, and the binary module system :

http://iadix.com/articles/viewarticle/en/purenode%20memory%20and%20component%20programming%20model_0/blogs/purenode

I'll probably update it to add more example and better page formatting Smiley

Still no date from the ICO, nothing is really heavily tested for the moment, don't hesitate to mentions bugs or errors or comments Smiley

Normally i just have to finish the page with the 3D demo, and we can start to get more precise with the ICO details, with the escrowed coins and the official detail, and the bounty campain.

Thanks for your patience Smiley


The dev's positive attitude may make a likely success in the future. Keep my eye on it. And look forward to the ico.
member
Activity: 85
Merit: 10
sr. member
Activity: 546
Merit: 250
Waiting Iadix ICO started dev
jr. member
Activity: 50
Merit: 10
i don't care if this is a trash coin, i just waiting the bounty twitter


salute your choice good idea for becoming a good businessman and for going further.
full member
Activity: 322
Merit: 151
They're tactical
Hello Smiley

Some news from the developpment Smiley

i have put online the new block explorer :

http://iadix.com/ico/blocks/en

Which include a filter system, the api looks like this :

2&size>400">http://iadix.com/ico/api/blocks?height<86000&tx*>2&size>400



https://github.com/iadix/purenode/blob/master/block_explorer/block_explorer.c#L212


Code:
	

tree_manager_set_child_value_i64(result, "height", height);
tree_manager_set_child_value_i32(result, "size", size);
tree_manager_set_child_value_hash(result, "hash", block_hash);
tree_manager_set_child_value_i32(result, "confirmations", nblks-height);
tree_manager_set_child_value_i32(result, "time", time);
tree_manager_set_child_value_i32(result, "version", version);
tree_manager_set_child_value_i32(result, "bits", bits);
tree_manager_set_child_value_i32(result, "nonce", nonce);


for (qv = 0; req->query_vars[qv].value.len > 0; qv++)
{
if (!tree_node_keval_i64(result, &req->query_vars[qv]))
{
release_zone_ref(&block);
return 0;
}
}



I also added a mechanism to buffer blocks that are potentially orphaned, and being able to put a node on testing to test a few blocks and rollback the current chain to the fork point if the other chain is longer.

https://github.com/iadix/purenode/blob/master/purenode/main.c#L1182

Code:
if (testing>0)
{
hash_t lh;
int new_len,cur_len;

if (!tree_manager_get_child_value_hash(node, NODE_HASH("last_header_hash"), lh))
node_get_hash_idx(testing-1, lh);

tree_manager_create_node ("log", NODE_LOG_PARAMS, &log);
tree_manager_set_child_value_hash (&log, "ph", prevHash);
tree_manager_set_child_value_hash (&log, "lh", lh);
log_message (" testing block '%ph%' -- '%lh%'", &log);
release_zone_ref (&log);

if (memcmp_c(prevHash, lh, sizeof(hash_t)))
{
release_zone_ref(&header);
return 0;
}

new_len = node_add_block_header(node, &header);
cur_len = get_last_block_height();

tree_manager_create_node("log", NODE_LOG_PARAMS, &log);
tree_manager_set_child_value_i32(&log, "new_len", new_len);
tree_manager_set_child_value_i32(&log, "cur_len", cur_len);
log_message("testing chain at height : %new_len% - %cur_len%", &log);
release_zone_ref(&log);

if (new_len > cur_len)
{
mem_zone_ref last_blk = { PTR_NULL };
int n;
uint64_t lost_reward;

lost_reward = 0;
n = cur_len;
while ((n--) > testing)
{
char chash[65];
hash_t h;
uint64_t reward;

if (!node_get_hash_idx(n, h))continue;

n = 0;
while (n<32)
{
chash[n * 2 + 0] = hex_chars[h[n] >> 4];
chash[n * 2 + 1] = hex_chars[h[n] & 0x0F];
n++;
}
chash[64] = 0;

if (is_pow_block(chash))
reward=get_blockreward(n);
else
get_stake_reward(n, &reward);

lost_reward += reward;
}

tree_manager_create_node("log", NODE_LOG_PARAMS, &log);
tree_manager_set_child_value_i32(&log, "testing", testing);
log_message("truncate chain to height : %testing%", &log);
release_zone_ref(&log);

if(node_truncate_chain(testing))
{
if (tree_manager_find_child_node(&self_node, NODE_HASH("last pos block"), NODE_BITCORE_BLK_HDR, &last_blk))
{
unsigned int pBits;
if (compute_last_pos_diff(&last_blk, &pBits))
tree_manager_set_child_value_i32(&self_node, "current pos diff", pBits);
else
tree_manager_set_child_value_i32(&self_node, "current pos diff", 0x1FFFFFFF);

release_zone_ref(&last_blk);
}

sub_moneysupply (lost_reward);

log_output ("switching to new chain \n");
tree_manager_set_child_value_i32(node, "testing_chain", 0);
}
}
release_zone_ref(&header);
return 0;
}

if (!tree_manager_find_child_node(payload, NODE_HASH("txs"), NODE_BITCORE_TX_LIST, &tx_list)){ release_zone_ref(&header); return 1; }
if (!tree_manager_find_child_node(payload, NODE_HASH("signature"), NODE_BITCORE_ECDSA_SIG, &sig)){ release_zone_ref(&tx_list); release_zone_ref(&header); return 1; }
tree_manager_get_node_istr(&sig, 0, &signature, 0);
release_zone_ref(&sig);

ret = node_is_next_block (&header, &lastBlk);
if (!ret)
{
ret = check_node_chain(node, &header, &keep_block);
if (!ret)
{
free_string(&signature);
release_zone_ref(&header);
release_zone_ref(&tx_list);
return (keep_block==1)?0:1;
}
}


And also 2 command line parameters to rebuild local index and re validate local block chain, or looking for corrupt data.

Code:
launcher rebuildtxs

To recheck the block headers and tx indexes.

Code:
launcher rebuildsupply

To recheck block reward and proof of stake/proof of work to rebuild the money supply.


Additionally i started to write some more in depth documentation about the memory model, and the binary module system :

http://iadix.com/articles/viewarticle/en/purenode%20memory%20and%20component%20programming%20model_0/blogs/purenode

I'll probably update it to add more example and better page formatting Smiley

Still no date from the ICO, nothing is really heavily tested for the moment, don't hesitate to mentions bugs or errors or comments Smiley

Normally i just have to finish the page with the 3D demo, and we can start to get more precise with the ICO details, with the escrowed coins and the official detail, and the bounty campain.

Thanks for your patience Smiley
newbie
Activity: 35
Merit: 0
We're still working to improve Purenode and everything that can be done to make a better ico announcement.
We'll communicate the new date quickly, thanks for your interest !
hero member
Activity: 742
Merit: 501
full member
Activity: 322
Merit: 151
They're tactical
Very interesting project

Thanks Smiley


though everything here sounds pretty much abstract, and in general it looks like the project lacks focus - meaning it needs to define some specific direction (maybe several ones) and most importantly concrete goals set with their respective timeframes.

I am a bit lost reading about all those capabilities... trying to understand what specific targets this powerfull framework will have. Will play more with website to see if it clears up things.

The framework was not designed specially for blockchain originally, so it's focus is very wide, from hardware drivers ( usb, hid,audio, vesa), asynchronous events, management of different types of network protocol, object references, but it has very pragmatic application, and all the code already works, but it's made to be a modular framework, rather than monolithic application, so necessarily it's a bit abstract Smiley The goal of the framework is to build a solid, interoperable, light weight abstraction layer to build application on, and I have different practical cases in mind.

In a way i kept this project out of the commercial pipeline to have the time to advance on the code at baby step looking the best way to implement each thing with network protocol json/rpc , threading and asynchronous io in mind, and to avoid to have to rush the development of certain thing to release specific application with a well defined dead line, but lots of it is already ready and tested now Smiley

For the blockchain specific things, there is already large part of what is needed to make a client for any blockchain based on bitcore , using any hash algo that is compiled in or in a module, with staking with pos 1/2/3 and is interoperable with bitcore based wallet, with compatible rpc interface.

There is not much documentation online, only short explanation on the rough idea, but I will write more detailed documentation latter.

I have just a small question... You tell you will provide universal binaries to be used on practically any system and architecture. I wonder which format those binaries will be based on? It cannot be just assembler/machine code, as this cannot be used both on x86 and ARM, and even I doubt the same format could be used on x86 machines running Windows and Linux respectively. Will that be .dll, .so, or something proprietary?

I say only on different system, the binaries are position independant dynamically  linked modules, which contain machine code, they can be run only on same cpu architecture, but they dont depend on the compiler runtime or the host system, all the module are in simple C , it should not be hard to compile for different cpu architectures, including arm, I have plan for the raspberry pi , but it will need a version of the binaries for each cpu architectures, for the moment it's 32bits x86, with sse for the raytracing, it can run on any system running on x86 /x64 with x86 emulation, other binaries need to be made for arm, or for native 64 bits intel.

However I would like to have some test with udp implementation of certain parts of the protocol enough to make useable client, before to get into arm.

The same binaries can already be compiled on windows with visual studio and used on linux, or compiled on linux with gcc and used on windows, it already works and is testable from the git. I already tested this with micro kernel architecture so can safety say the dependencies are "in check".

Most of the binaries running on the ubuntu 64 server currently have been compiled with visual studio 2013 on windows, including the raytracing with the sse code with sse C intrinsic.

It is home made ABI, there is zero documentation on the inner format, but the code source to create them out of 32 bit dll & so file is on the git  ( https://github.com/iadix/purenode/tree/master/mod_maker ) , and the loader too ( https://github.com/iadix/purenode/blob/master/libcon/tpo_mod.c ).



I should release a new version on the git in the next days, and the new block explorer, after i will improve the 3d demo page, and then ill see after in 2 weeks how everything goes with the ico préparation if there are more needs for the site and web things, then I will write more documentation on the memory model, references tree, json rpc, modules, and the blockchain specific modules & applications with more html5 examples, either for the website or for the node built in application like block explorer & secure wallet, and/or with the raytracing.
newbie
Activity: 35
Merit: 0
Well, due to its modular conception and other special features concerning interaction with HTML, purenode can do lot of things.
The blockchain bounty tool is a good example of a nice little web-app that can be useful.
It didn't take long time to build it as the core is functional and can already work through browser.
Purenode can handle all bitcore coins, and be integrated in all kinds of blockchain process needed.
Building bitcoin or altcoins web-apps can be very easy with it.

Concerning the technical part, I think our dev will be much more sharpen than everybody else to explain in details how it works exactly.
I can already tell you that you've never seen that kind of thing  Grin
legendary
Activity: 2548
Merit: 1073
Very interesting project, though everything here sounds pretty much abstract, and in general it looks like the project lacks focus - meaning it needs to define some specific direction (maybe several ones) and most importantly concrete goals set with their respective timeframes.

I am a bit lost reading about all those capabilities... trying to understand what specific targets this powerfull framework will have. Will play more with website to see if it clears things up.

Meanwhile, I have just a small question... You tell you will provide universal binaries to be used on practically any system and architecture. I wonder which format those binaries will be based on? It cannot be just assembler/machine code, as this cannot be used both on x86 and ARM, and even I doubt the same format could be used on x86 machines running Windows and Linux respectively. Will that be .dll, .so, or something proprietary?
newbie
Activity: 35
Merit: 0
Thanks ShooterXD !
We're still working on the website , nearly finish, but the result will show our Purenode multichain capabilities exposed with some examples.
Don't miss our Purenode based Twitter bounty app with its bounty explorer ! Smiley
hero member
Activity: 924
Merit: 501
CryptoTalk.Org - Get Paid for every Post!
newbie
Activity: 35
Merit: 0
You're invited to test our Purenode based Twitter bounty rewarder we've made for our ico  (which starts soon, new dates will follow)
You just have to suscribe on our website, and look at your account.
You'll find an online wallet page where you can create your own adress, and the b ounty page, where you'll just have to follow the instructions to test it.
It's not active by now and is in testing phase, so you won't earn rewards before the campaign really starts.
We are happy to show you an interesting Purenode web-app, made by our dev in some days, to demonstrate how easy it is to handle Purenode for interactions through browsers.
We hope you'll like this tool, and we're waiting your comments to eventually bring it further improvements Smiley
Thanks !
full member
Activity: 322
Merit: 151
They're tactical
Originally my intention with starting the framework was more educational than anything Cheesy

I started to get on this some years ago because i found it was frustrating that it's not possible to really program the hardware with assembler at all in modern operating system, and after certain experience with video streaming where it need to synchronize different hardware between audio card, network card, video card, and application ui, operating system how they are made introduce whole complex layers and framework to deal with asynchronous hardware pci and smp.

It's why i started to get into developing micro kernel architecture, with in mind to give full potential of modern application framework, but without the whole thing of memory protection and still being able to program the hardware and deal with dma/interupt and synchronous things more directly from the application layer, but still keeping as directly connected as possible with html5, DOM, dynamic object, json, xml, templating, js, AS3 and this kind of things.

All the framework is already well tested with preemptive multi tasking on bare metal os, with interupt, and already start of graphic system based on the same json data tree, which can work in multi thread (eg application/rendering on two different thread, manipulating json data tree).

Purenode currently it can run for weeks with 20Mo of memory with block explorer, wallet, etc

And also integrating all the crypto and PGP and secure protocol in a way that is easy to use and thinking into P2P decentralized system, even for device without local hard drive. Or something that look like html5 application without access to local file system.

It's how i came to develop the framework originally, and it's completely based on components exchanging json data tree, and it's how i came to blockchain because it's exactly the same principle with distributed application who exchange data using json and rpc/http with crypto and security/privacy.

I still don't know since the beginning how it can take commercial form or not, in any case i'll probably keep working on it as a pet project and make it public in a way or another at the pace it goes Smiley

We have some doors to knock on also in the traditional investment thing, but then it's mostly likely to be though as more commercial products, i'm not sure how it can take form but certain application can be found for certain thing, maybe to replace node.js kind of things, with a good framework made in C who can have good performance and good multi threading and vector float using simd or glsl/opencl, and connectivity to blockchains, and able to exploit all the feature of blockchain with data ownership and global synchronization on different assets on different blockchains.

But the projects doesn't have a very well defined direction and cost estimation yet, we are working on different ideas to market for a year, but it's hard to have good visibility in the close future, or to know what will really be the thing to develop within a year or two, well there are things to still finish on the core itself, for it to be 100% able to handle most blockchain & have all the maturity and testing, and probably good documentation, application examples to show some common use case, like maybe shop, or social net, 3D, audio/video in decentralized/distributed way, integration with existing web framework like joomla, symphony, bootstrap, to have secure application framework connected with the web and distributed application.

But it's hard to really know what will be really be the most profitable to develop in short term, and what is the demand and what it will be in the next year or two years.
newbie
Activity: 35
Merit: 0
What we'd like to have and what we'll have are 2 differents stories...
You ask us to speculate on something we don't control...
If there's not so much, we'll just do less things.
With Purenode, all your dreams come true ! Smiley
Have you seen the html blockchained bounty rewarder made with Purenode on our website ?
That's an example of what we're going to do with the ICO...disrupting services, explore and integrate new capabilities into Purenode blockchain.
hero member
Activity: 2730
Merit: 588
We started our work with 3 members from France, and some consultants.
That's why want to hire people to build the dream team Smiley

Wish upon the crypto gods & stars that your dream will come true.

What's the minimum amount to make that dream happen? And if you don't raise enough?

Yes, at least give us some ideas on how much is the minimum and your contingencies.
There should be concrete plans at least. And not relying on fate.  Wink

Pages:
Jump to: