Pages:
Author

Topic: [ANN][SIM] Simcoin - A Simple Coin - page 2. (Read 157763 times)

hero member
Activity: 840
Merit: 1002
Simcoin Developer
February 22, 2015, 10:16:32 AM
Progress report

Not much progress this week because I had to take 3 days off and deal with some real life stuff.

Normally I work every single day without weekends or holidays, but unfortunately sometimes you have to do other things too Sad
hero member
Activity: 840
Merit: 1002
Simcoin Developer
February 15, 2015, 11:18:09 AM
Progress report

Good progress this week, but mostly on small things, which hardly seem worth mentioning.

Here's about 2 days worth of to-do items, to give you an example. Not sure if anybody reads these, but anyway Smiley

+ Split SQLite into 2 classes to make setting exposed API and some additional checks more clean.
+ Comm keys stuff moved into its own independent sub-task.
+ self.accounts, set from the ledger check task.
+ Realized that there will probably be some modified versions of nodes running, so added a "branch" field into both Pong response and status. It will also help to distinguish bugs between platforms (Windows/Linux, etc.). Wiki updated.
+ task_died.is() to compare by name.
+ Added "update keys" command.
+ Added confirmation support into node's console.
+ Beep on console.confirm(). Also tested flashing the window - not good.
+ Nasty bug found and fixed: starting tasks inside incoming() or outgoing() sometimes caused indexes to shift, so had to rewrite the whole event dispatcher loop to allow this.
+ Writing some draft code for task subscription for commands...
+ Finalized how the vault records are enumerated via commands.
+ Reject vault passwords shorter than 6 chars on nodes.
+ Added "status" command to get a bunch of aggregate info about the core.
+ Rewriting and simplifying T_Startup to manage _all_ the tasks startup sequence in one place.
+ BUG FIXED: didn't catch if there's no keys in the vault in T_LedgerComms.
+ Improved SimExplorer a bit and added public keys display. Took some time to figure out how to do it because of SQLite's stupidity.
+ Removed sim.out_packet and sim.out_raw_packet - they are almost always "out". Only Net and Triage send them as "in" and they can do it manually.
+ Consistency changes:
    + "cfg" => "cfg / set cfg"
    + "vault pass" => "set vault pass"
    + "vault info" => "get vault info / vault info"
    + "vault data" => "vault data / set vault data"
+ New vaults for all test nodes generated (the stretching algorithm changed).
+ "cfg loaded" event.
+ Set node name from INI by Supervisor on "cfg loaded". Enforce allowed characters only.
+ Moved "time" and "ts_adjust" into status. Renamed to "net_time" and "time_diff". Fill net_time by Supervisor from self.time() for "status" command. Wiki updated.
+ Replace "type" and "reason" with arrays in sim_cmd.
    + Also use cmd_type() instead of "type" to allow "type" to be used by other commands, like sim_packet and sim_vault_data.
+ Unicon switched from node indexes to account ID's to help with decoupling.

Also started drawing a startup diagram, because things are getting a bit complicated:



The good news is: the end of the refactoring is in sight. I won't give you any time estimates because when you refactor, you constantly get new ideas about how the code should be written and organized, and that's hard to predict, but at least most of it is finished.
hero member
Activity: 840
Merit: 1002
Simcoin Developer
February 08, 2015, 12:44:26 PM
Progress report

This was a relatively slow week, plus I worked on many small things, which are hardly worth mentioning, like splitting the ledger into several sub-tasks because it became too big, or the "task died" event to help with task synchronization...

But anyway, this project is not a sprint, it's a marathon, so steady progress is what matters.
hero member
Activity: 840
Merit: 1002
Simcoin Developer
February 01, 2015, 07:28:26 AM
Progress report

This week I continued working on refactoring the vault and on command-based interface for it.

Also added the third core mode – "neutral" – in which the core only serves as a passive library and provides useful services to third-party applications.

Added a bunch of generic/crypto functions. For example, any app can generate public/private keys from a text passphrase by sending this simple command:



It will also return the address of the account, which corresponds to this passphrase. Very clean and simple.

--
 
Created Vault Maker GUI tool:



More info here: https://simtalk.org:444/index.php?topic=29.0

--

Switched SQLite to use delayed DLL loading because in the neutral mode not every app wants to include 400 Kb DLL if it's never used.

--

qhoster finally restored my lost VPS (and only after just one month Roll Eyes), so I was able to copy old data and restore SimExplorer and wiki.
hero member
Activity: 840
Merit: 1002
Simcoin Developer
January 25, 2015, 10:03:30 AM
Progress report

This week I was working on refactoring the vault and on command-based interface for it (+ wiki spec).

The vault is an important part, so it requires a lot of thinking and ideally should have been a stand-alone project, yet I am developing it just as an optional feature of Simcoin...

Also added the auto-repair capability to the vault, in case the file gets corrupted. Updated the old repair algorithm description in the wiki.

--

Checked a few JSON libraries for C/C++, didn't like any of them for the simple task I need: passing commands to/from JS to limit the number of wrapper API functions. Will probably write something simple myself.

--

Spent one day setting up our own forum, which will be shared with CryptoPlay

You will find more information and more frequent updates about both projects there.
hero member
Activity: 905
Merit: 1001
January 18, 2015, 04:52:28 PM
i am working alone all the time and i wont miss my bugtracker and my code version control. its really worth the effort. when you want to look back in the past. what you did last week. why you changed exactly one line of code. save screenshots or other things to a bug ticket etc etc etc.....


good progress.
but: a todo txt file??? please use a bugtracker like mantis. i know its a little bit of work to set it up but it will save you sooo much time in the future.

In the future, maybe. But when I work alone on a code that's not yet public text files work best for me.
hero member
Activity: 840
Merit: 1002
Simcoin Developer
January 18, 2015, 02:41:18 PM
good progress.
but: a todo txt file??? please use a bugtracker like mantis. i know its a little bit of work to set it up but it will save you sooo much time in the future.

In the future, maybe. But when I work alone on a code that's not yet public text files work best for me.
hero member
Activity: 905
Merit: 1001
January 18, 2015, 02:39:42 PM
good progress.
but: a todo txt file??? please use a bugtracker like mantis. i know its a little bit of work to set it up but it will save you sooo much time in the future.
hero member
Activity: 840
Merit: 1002
Simcoin Developer
January 18, 2015, 12:30:39 PM
Progress report

This week I took care of communication ID collisions. Since the ID is 4 bytes long there could be collisions as the number of users grow. For 4,000 users the chance is one in a million, but for 4 million, it's one in a thousand.

Previously I left this to be dealt with in the future versions, but since commands are now a documented interface, I had to think how to handle collisions and implement the solution.

By the way, I could have probably saved myself about a month of work if I didn't bother to encrypt packets, like all the other coins don't.

It's one of those tasks that seem relatively simple to a regular person ("You just need to call something like encrypt(packet) and that's it, right? How hard could that be?"), but prove to be much more complicated in reality. Because before you can call encrypt(), you need to get a key and this unfolds a whole chain of events and problems. I might tell you more about it one day Smiley

But anyway, I found more or less simple ways to deal with all the complexities, so now collisions are taken care of.

--

Spent some time adding automatic indentation to wiki sections. Some articles became quite large and difficult to read. So had to figure a way to do it.

--

I will post the new roadmap once the refactoring is complete, but in general I am at the stage where most of the things kinda work, but there's still a gazillion of small tasks to be done.
 
This is Simcoin right now:



You can see the whole building, but still need to lay thousands of small bricks to fill the walls.

And here's how software development works:



Most indie projects fail in the Q point, when the going gets tough. You see it all the time – a few young hotheads gather together and decide to do a super cool game and in a couple of weeks they post cool screenshots, which look almost like a complete game. And then it never goes anywhere beyond that point and project members get frustrated and quit.

Why? Precisely because of that graph. You work and work and nothing seems to happen and it feels like you're stuck and will never finish it.

Here are just some recently closed items from my to-do list:

+ Tasks::add(): protection against null pointers.
+ BUG FIXED: Incorrect check "!find()" for array when it returns 'int' instead of 'bool'.
+ BUG FIXED: Can't init TaskDesc before inserting! Otherwise it references itself by ID and it's not in array yet.
+ BUG FIXED: set 'done' to 'true' in Tasks constructor, otherwise init() will wait N seconds for the non-existent thread to finish
+ Set reason in sim.quit() and don't reset it for 'quit' command, so we could return errors this way.
+ Move socket and NetStats from Packet into T_Net.
+ Bruteforce ID collisions in Tasks::add(), otherwise every 16 M tasks there might be a problem...
+ Suicide tasks a bit differently. 'dead' array.
+ INI: Remove the variable if an empty string passed.
+ KVS walk functions. dump(). Bug fixes. Big endian keys, key size added for that.
+ "OK" reason to mark processed command.
+ Sending sim.quit() in on_exit handler.
+ 'level' parameter for sim.start_task.
+ Default level for tasks into task factory.
+ CmdLog: add indent.
+ BUG FIXED: outgoing() pass wasn't executed for orphaned commands, this could lead to wrong indent in CmdLog because incoming() wasn't paired.
+ Tasks::print()
+ BUG FIXED: 'quit' message must be sent only in one pass.
+ SimApi::out_raw_packet.
+ 'bool4' type for commands to make misalignment less probable.
+ 'is_node' into 'comm_key' command.
+ BUG FIXED: outgoing task no was 1 more than it should, because after the loop it's invalid. And also if you processed a command you shouldn't receive outgoing() call anyway.
+ BUG FIXED: outgoing must cycle till "i >= 0" instead of "i > 0". D'oh!
+ BUG FIXED: Tasks::add("") didn't set the level and it also didn't set it properly. 2-in-1 bug.
+ Client's data path from DLL path.
+ Rename 'hash' into 'hmac4' and use 4 bytes instead of 3. Update wiki.
+ Triage::get_peer() that will deal with comm_key event/adding internally.
+ KPS::next().
+ Change Triage to use next() to cycle through all keys and decode proper one.
+ Damn, 'account' and 'is_node' must be returned for each key!
+ operator == to Hash32. Store hmac in vault as Hash32 instead of byte[32]. Need to convert everywhere.
+ Hash32: added a bunch of functions to support "Hash32().add(prefix).add(msg,size).calc();" style of programming.
+ Hash32: zero buffer after stretch() to clear passwords.
+ Tasks::add(): don't add tasks if quitting.

And it goes on and on and on… Sad
The to-do text file is already 329 Kb in size!

There's no other way than to just grit your teeth and keep going...
hero member
Activity: 840
Merit: 1002
Simcoin Developer
January 18, 2015, 05:47:52 AM
I would like to know - the account password (in the exchange) is only 8 characters. Very short. This can be bruteforced easily, no? Is it safe? Is the account blocked after unsuccessful attempts or something like this?

You think it's feasible to bruteforce a 8-character alphanumeric mixed case + digits password over the network?

Do the math.
hero member
Activity: 840
Merit: 1002
Simcoin Developer
January 18, 2015, 05:46:28 AM
One way to reassure me personally...

And why would I bother?
sr. member
Activity: 249
Merit: 250
January 18, 2015, 03:47:25 AM
I would like to know - the account password (in the exchange) is only 8 characters. Very short. This can be bruteforced easily, no? Is it safe? Is the account blocked after unsuccessful attempts or something like this?
hero member
Activity: 763
Merit: 500
hero member
Activity: 784
Merit: 500
January 16, 2015, 04:45:48 PM
Could we have an updated roadmap for the development/release of Simcoin? Merci! Smiley
hero member
Activity: 840
Merit: 1002
Simcoin Developer
legendary
Activity: 1708
Merit: 1000
Reality is stranger than fiction
January 11, 2015, 07:40:42 AM
Nice! Keep up the good work! Smiley
hero member
Activity: 840
Merit: 1002
Simcoin Developer
January 11, 2015, 06:01:17 AM
Progress report

This week I was converting the client to use simcoin.dll core.

It was more time-consuming because the client was much more messy (the main reason that motivated me to move all the simcoin core functionality into a separate library).

Also because the client acts as a middle layer between the core and the Java Script code: since JS can't use commands/events directly, they needed to be wrapped in a set of API functions.

The conversion is not yet finished, there's still some more work left.
hero member
Activity: 840
Merit: 1002
Simcoin Developer
January 08, 2015, 04:44:29 AM
Is any of this of relevance to Simcoin's future in terms of Quantum computing being a potential future threat to crypto?

http://en.wikipedia.org/wiki/Supersingular_Isogeny_Key_Exchange

I have enough things to worry about without quantum computers Grin
Pages:
Jump to: