Show Posts - Come-from-Beyond
Please login or register.

Login with username, password and session length
Advanced search  


Latest Nxt Client: Nxt 1.11.15

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - Come-from-Beyond

Pages: [1] 2 3
Pub crawl / Conspiracy game
« on: March 13, 2015, 11:16:04 pm »
Let's play "Conspiracy" game.

Rules are quite simple. Someone starts with posting a conspiracy theory. Another person refutes it (as a whole or only part) by using a more weird theory. Next person have a choice, if he likes the new theory then he refutes it with an even more weird one, if he doesn't like it, then he posts his own refutation of the original one. (It's like forging after the last block if you like it or forging after the previous one if you don't.) The game continues until someone creates a conspiracy theory that is explained by the very first one. Looped in other words.

An example:

Alice: Almost all people are controlled by aliens who hide their mothership behind Moon hologram. This is why I always wear a tinfoil hat. The hat works, otherwise aliens wouldn't allow me to reveal their secret.

Bob: Tinfoil hats don't work. Aliens make appearance that the hats work by not controlling those who wear them. When the time comes the aliens will activate the total control and enslave the humankind.

Charlie: Tinfoil hats indeed do not work. Thoriumfoil hats didn't work too, this is why the aliens became affected and now none of them can control the controlling device. This means that while (technically) people are controlled noone says them what to do, hence people can do what they want (even reveal alien's secrets).

Pub crawl / What color scheme do you prefer?
« on: February 11, 2015, 03:42:28 pm »

Jinn / Assembly language
« on: January 28, 2015, 06:24:07 pm »
Code: [Select]
Jinn assembly language has 3 operations:

- Set
- Go
- Call

"Set" changes values in the memory. "Go" moves the execution point. "Call" invokes routines.

Every instruction has one or more operands. These operands are outputs of functions that receive inputs in the form of literals, values stored in the memory or outputs of other functions. The depth of function nesting is limited by hardware capabilities but at least one level will be supported by any generation of Jinn. If more levels of nesting are required than supported by hardware then intermediate results must be stored in the memory.

Format of Set instruction: [0] [destination] [source]
Format of Go instruction: [+] [instruction index]
Format of Call instruction: [-] [routine id] ([parameter 1] [parameter 2] ... [parameter N])

Every parameter of a function at the deepest level of nesting can be a literal, the value of a memory cell addressed by a literal or the value of a memory cell addressed by the value of a memory cell addressed by a literal.

Format of such a parameter in the case of a literal: [0] [width] [literal]
Format in the case of the value of a memory cell addressed by a literal: [+] [width 2] [width] [literal]
Format in the case of the value of a memory cell addressed by the value of a memory cell addressed by a literal: [-] [width 3] [width 2] [width] [literal]

Let's analyze an example of the last case, other cases follow similar patterns.

[-] [0+] [0-] [+] [0]

[-] says that it's "double indirect addressing".
[+] says that we need next 1 trit which is 0.
[0-] says that we need to read 27 trits at address 0 to get some number (let's call it N).
[0+] says that we need to read 9 trits at address N to get the resulting number.

Widths are encoded in such the way:

[+] = 1 trit
[-] = 3 trits
[0+] = 9 trits
[0-] = 27 trits
[00+] = 81 trits
[00-] = 243 trits

Here is an example how "Set 9 trits at address 19 to value of 1 + 7" is encoded (it's written in vertical direction because contains comments for every fragment of the instruction):

[0] = This is the opcode of Set operation
[0+] = We want to set 9 trits
[0] = We use direct addressing
[0+] = Width of the address is 9 trits
[+0-+00000] = This is 19
[-] = Id of ADD function is 3, this requires 3 trits
[0+0] = 3, which is the id of ADD function
[0] = first parameter is a literal
[+] = its width is 1 trit
[+] = 1
[0] = second parameter is a literal
[-] = its width is 3 trits
[+-+] = 7

The same in horizontal direction with spaces for readability:

0   0+   0   0+   +0-+00000   -   0+0   0   +   +   0   -   +-+

Any questions?

Jinn / Programming model
« on: January 28, 2015, 01:42:56 pm »
A program is a set of entities that can spawn other entities, affect each other and decay according to the logic of the program.

An entity is an isolated unit of data and code called "state" and "behavior" correspondingly.

Entities affect each other by sending pieces of data called "effects".

Every effect is sent to one or several entities grouped together into a subset called "environment".

Entities join and leave environments in the result of their reactions to effects.

A program can communicate with the outer world and other programs running on the same computer by sending and receiving messages via data channels.

Jinn ensures that effects are delivered to every entity belonging to targeted environments even if a program is scattered amoung thousands physical devices, the same is not true for communications via channels.

Execution of a program is split into quanta. Entities define an order of effect processing only between different quanta, the order within a single quantum is not defined and depends on optimizations made by underlaying hardware that tries to minimize latency in interactions between entities hosted on different devices.

Pub crawl / Looking for the best comics
« on: January 26, 2015, 06:17:27 pm »
Let's check how https://en.wikipedia.org/wiki/Gradient_descent works for the problem of finding the best comics.


1. Read the comics in the latest post of this thread.
2. Go to http://xkcd.com and click [RANDOM] until you find a comics that is better than one from step 1.
3. Post the direct image in this thread.


Nxt accounts and asset ids could be represented in such a manner that would make it easily recognizable when a user works with an account that he already worked with in the past. This would improve user experience by reducing number of errors.

I'm too lazy to explain the details, you can figure them out yourselves:

Code: [Select]
<svg width="400" height="400">
<ellipse cx="200" cy="200" rx="180" ry="150" style="fill:white;stroke:blue;stroke-width:3;" />

<ellipse cx="120" cy="180" rx="30" ry="40" style="fill:white;stroke:blue;stroke-width:3;" />
<ellipse cx="120" cy="180" rx="10" ry="10" style="fill:blue;stroke:blue;stroke-width:3;" />
<ellipse cx="280" cy="180" rx="30" ry="40" style="fill:white;stroke:blue;stroke-width:3;" />
<ellipse cx="280" cy="190" rx="20" ry="20" style="fill:blue;stroke:blue;stroke-width:3;" />

<line x1="100" y1="100" x2="160" y2="160" style="stroke:blue;stroke-width:3" />
<line x1="300" y1="100" x2="240" y2="160" style="stroke:blue;stroke-width:3" />

<ellipse cx="200" cy="230" rx="5" ry="40" style="fill:white;stroke:blue;stroke-width:3;" />
<ellipse cx="200" cy="290" rx="80" ry="10" style="fill:white;stroke:blue;stroke-width:3;" />


Meta Nxtforum / I can't bitcoinpaul myself
« on: January 12, 2015, 09:05:11 am »
There is no such a button/link under my avatar, though I can bitcoinpaul everyone else. This is not good...

General / Time shift trick
« on: January 10, 2015, 09:59:49 pm »
I was forging during Monetary System launch and tried one trick. Look at the picture below:

This picture shows potential forgers sorted in chronological order (red ones are those who skipped their turn).

I was only 3 seconds behind my competitor (my account is NXT-DY7Z-2WJJ-F4RG-CW723), so I adjusted computer clock by 12 seconds and won the race by generating block https://nxtblocks.info/#section/blockId/15481497750180609998 earlier than expected.

It is known that forgers accept blocks with 15 second gap and I utilized this to win 450 NXT*. When Transparent Forging is completely on this issue will be solved automatically. For now you may need to find a work-around. Or not, I don't see how this could be used to harm the system.

* - I was going to send this amount to the legit winner but then I realized that it's the account of the BTER hacker and changed my mind.  :D

UNITY / Being on the edge of progress...
« on: January 07, 2015, 11:33:54 am »
...SuperNET ought to think of adopting this tech - http://en.wikipedia.org/wiki/Supersingular_Isogeny_Key_Exchange

It's the best key exchange scheme resistant to quantum computers ATM.

Jinn / City in the sky
« on: January 03, 2015, 01:30:08 pm »
I created this thread to brainstorm solutions that could lead to building of a city for Jinn-powered micro-robots.

Imagine robots that are very light and autonomous. Such robots could fly to the sky and form colonies. Atmosphere is not inhabited by humans and seems to be a safe place for the robots. They could provide different services like data broadcasting and live in symbiosis with humans.

Why Jinn is suitable for them:
- it's designed to consume as little energy as possible
- it's designed to be very durable
- it will be very small if manufactured with modern technological process

Now we need to list possible problems and how to solve them.

I'm working on a mod that will bring multiplayer to the world of Skyrim. There will be only a single instance of it and after a while the land (space) will become a scarce resource. I'm going to request the token of a Nxt account instead of login/password, also I'm thinking of putting a limit on min balance of the account to mitigate a Sybil attack. Is 100 NXT a good amount or it should be adjusted? It's not too low to collect that much via faucets or begging but it's not too high to raise the entry barrier significantly.

Nxt General Discussion / Do you like Skyrim?
« on: October 31, 2014, 07:37:00 pm »
This is a 30-day poll aimed to gauge popularity of Skyrim among nxters.

PS: Mods, please, don't move this topic to Off-topic, it's supposed to be related to Nxt but the details will be revealed later.

Jinn / Small test
« on: October 16, 2014, 04:54:41 pm »
We have 3 numbers:

-1, 0, +1

We have 3 functions:

neg(x), add(x, y), mul(x, y)

such as

neg(-1) = +1
neg(0) = 0
neg(+1) = -1

add(-1, -1) = +1
add(-1, 0) = -1
add(-1, +1) = 0
add(0, -1) = -1
add(0, 0) = 0
add(0, +1) = +1
add(+1, -1) = 0
add(+1, 0) = +1
add(+1, +1) = -1

mul(-1, -1) = +1
mul(-1, 0) = 0
mul(-1, +1) = -1
mul(0, -1) = 0
mul(0, 0) = 0
mul(0, +1) = 0
mul(+1, -1) = -1
mul(+1, 0) = 0
mul(+1, +1) = +1

We also have functions:

A(x, y) and B(x, y)

such as

A(-1, -1) = -1
A(-1, 0) = -1
A(-1, +1) = -1
A(0, -1) = -1
A(0, 0) = 0
A(0, +1) = 0
A(+1, -1) = -1
A(+1, 0) = 0
A(+1, +1) = +1

B(-1, -1) = -1
B(-1, 0) = 0
B(-1, +1) = +1
B(0, -1) = 0
B(0, 0) = 0
B(0, +1) = +1
B(+1, -1) = +1
B(+1, 0) = +1
B(+1, +1) = +1

The task is:

Implement A(x, y) and B(x, y) by using only combinations of neg(x), add(x, y) and mul(x, y), where inputs can be x, y, constants (-1, 0, +1) or outputs of the allowed functions.

X contains a description of a solution to a problem.

X may be revealed later.

SHA256(X) = 3b82e2b2e4b2a17dd622803063ef8e838149d4fd4924588bad80d49d20bbd747.


X =
Hereby to confirm that a solution to the problem of decentralized exchange of proof-of-work cryptocurrencies by using Nxt blockchain came to my mind on the 14th of October 2014. The solution is based on locking NXT of both the parties and releasing them after proof-of-work is validated. The validation includes analysis of blocks containing the corresponding transactions of the PoW currencies and their neighbor blocks.

I decided to publish the code that was used to refund the difference between a bid and the ask orders during Jinn Dutch auction. Some people asked for it, feel free to use the code as you wish.

Code: [Select]
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

public final class Refund {

    static final String BASE_URL = "http://localhost:7876/nxt?";
    static final String ASSET = "3061160746493230502";
    static final String ASK_ORDER = "75918681955013856";
    static final long NQT = 100000000;

    public static void main(final String[] args) throws Exception {


        final JSONArray trades = (JSONArray)request("requestType=getTrades&asset=" + ASSET).get("trades");
        for (int i = 0; i < trades.size(); i++) {

            final JSONObject trade = (JSONObject)trades.get(i);
            if (trade.get("askOrder").equals(ASK_ORDER)) {

                final long qty = Long.parseLong((String)trade.get("quantityQNT"));
                final long price = Long.parseLong((String)trade.get("priceNQT"));
                final String bidOrder = (String)trade.get("bidOrder");

                final JSONObject extraInfo = request("requestType=getTransaction&transaction=" + bidOrder);
                final String sender = (String)extraInfo.get("sender");
                final String fullHash = (String)extraInfo.get("fullHash");

                final long refund = qty * (price - 85 * NQT) + 1 * NQT;

                System.out.println("Sending " + ((double)refund) / NQT + " NXT to " + sender);
                final String tx = "requestType=sendMoney&recipient=" + sender
                        + "&amountNQT=" + refund
                        + "&secretPhrase=" + URLEncoder.encode(args[0], "UTF-8")
                        + "&deadline=1440&feeNQT=" + 1 * NQT
                        + "&referencedTransactionFullHash=" + fullHash;
                System.out.println("Request:      " + tx);
                System.out.println("Response:     " + request(tx));


    static JSONObject request(final String request) throws Exception {

        final HttpURLConnection con = (HttpURLConnection)(new URL(BASE_URL + request)).openConnection();
        return (JSONObject)JSONValue.parse(new BufferedReader(new InputStreamReader(con.getInputStream())));

To compile the code you will need https://code.google.com/p/json-simple/.

The secret phrase is passed as a command line argument.

Code: [Select]
final long refund = qty * (price - 85 * NQT) + 1 * NQT; should be changed accordingly, here it's assumed that the price is 85 NXT and 1 extra NXT is paid to cover bid order placement fee.

Jinn / Jinn & Distributed Computing
« on: October 10, 2014, 12:41:01 pm »
Sometimes I receive letters/messages with questions related to Jinn and distributed computing, so I decided to create a thread and explain this issue a bit.

Jinn processor is a bunch of independent cores. A piece of code (entity) running on a core does some computations and can interact via messages with other entities running on other cores. A single task may require to send millions messages between thousands entities. In some cases the order of these messages doesn't matter, in some - does.

If we set a strict order of the interactions then we may lose concurrency and in the worst case a processor with 1000 cores will utilize only 1 core at a single moment of time. On the other hand, it's very hard (if possible at all) to split a task into pieces of code that can run in any order. Jinn provides a way to set the sequence of interactions within desirable limits. Some interactions may happen in random order, some may wait for special conditions. This is one of the main contracts of Jinn - to ensure a particular order of interactions within a single processor box and among several processors working in tandem all over the world.

There were math co-processors speeding up floating-point operations in the past. Now we have GPUs that are used to render 3D scenes. Jinn has its specific usage too, it's designed to lower interaction latency of distributed computations.

Jinn / Roadmap for developers
« on: September 24, 2014, 03:19:00 pm »
Here is the proposed roadmap for developers who will take part in development of Jiniri:

1. Emulator - at this stage Java developers will get ability to write programs running directly on Jinn
2. Abracadabra compiler - any developer who knows JavaScript-alike languages will get ability to write programs
3. Operating system - development of programs will be greatly simplified, at this stage developers won't longer need to care about low-level issues, all things around will be treated as components of a global supercomputer (Internet-of-Things)

After all these stages are passed we will get ability to write programs running everywhere. For example, if you want to display something then any appropriate device near the user will show the picture (a TVset, smart-wallpapers, a mirror). But all this will require to shift paradigms we used to follow in classical programming.

PS: https://github.com/Come-from-Beyond/Jiniri

Nxt General Discussion / A longer reply to Jeff Garzik
« on: September 16, 2014, 01:59:57 pm »
Yesterday Nxt got an attention of Jeff Garzik who is one of Bitcoin core devs. Taking aside the real motives behind the tweet (https://twitter.com/jgarzik/status/511566276255154177) I want to reply to his suggestion to use Gitian for building Nxt binaries.

Gitian was created by Bitcoin devs to provide a deterministic way to build Bitcoin core software. The software is written in C++ which is compiled into assembly code and can't be easily reverted back into the source. Usage of Gitian requires a user to put trust into parties that verify source code, but this is a wrong way from my point of view (and PoV of suspect #1 on the role of Satoshi Nakamoto - http://nakamotoinstitute.org/trusted-third-parties/, - btw). A much better way is to use languages/technologies that preserve 100% of "open-sourceness" of the code. It's Java, C#, JavaScript to name a few. Programs written in these languages can be translated back into the source code (if obfuscation is not used).

Jeff says that "bytecode implants [into Java binaries] are trivial" but can't explain how it's even possible in real-world scenario. All that I got on my direct answer is a reply that looks as an attempt to derail the conversation. This is sad, Jeff, public figures like you shouldn't behave this way.

Regarding "users do /not/ build the binaries" (https://twitter.com/jgarzik/status/511868652648288256), check the archive, it contains the complete source code with the libraries and the building script. Those who trust Jean-Luc (lead Nxt dev) need just to check the hash of the archive. The binaries used by them can be easily decompiled should a question related to the original source code arise. Those who don't trust can build the binaries by themselves.

PS: Bitcoin has become too centralized. It asks you to trust GHash. It asks you to trust Gitian validators. Time to move from medieval epoch to a truly open world. Use Java/C#, they are as fast as C++ but are much more secure.

Nxt General Discussion / Unfair distribution
« on: September 15, 2014, 09:25:14 pm »
Maybe u know that story about unfair distribution of NXT - 73 guys got all NXT while the rest 7'499'999'927 people got none. BCNext didn't care about this unfairness coz the money is unfair in its very nature. Give every person equal amount of money and on that day it will lose its purpose. Soon Monetary System will be released and we should create a currency with as many participants as possible. Now it will be much easier coz people r aware of Nxt. The only question is unanswered:

When? In 2 months - to get 30'000 participants? In 1 year - to get 250'000? Maybe later?..

Nxt General Discussion / Revealing IP for forging
« on: August 31, 2014, 06:51:39 pm »
Is there anyone who is willing to "link" their forging account to IP address? This is necessary for sending transactions directly to forgers.

Pages: [1] 2 3