Pages:
Author

Topic: [SKY] Skycoin Launch Announcement - page 89. (Read 381579 times)

hero member
Activity: 498
Merit: 500
December 23, 2015, 01:06:39 PM
Update



The crypto port is done. Major milestone done!

I was almost ready to give up on getting it working, from frustration.

The actual bug was fixed nine days ago and the problem was in the test environment.

The test suite was failing in the test environment, but turns out is passed if the tests are run when the working directory is within the $GOPATH, but fails when the tests are run outside of the $GOPATH. This has something to do with how golang handles symbolic links (which do not exist in Plan 9...).  When the tests are run from outside of $GOPATH it was using a cached, older version of a package in a sub-directory of the original package and was not recompiling the library, when changes were made...

We also recently found another pure golang secp256k1 implementation
- https://godoc.org/github.com/btcsuite/btcd/btcec

Next:

I am trying to get cross compilation for OSX, Linux, Windows working now.

Then will post new version of the Skycoin client.

Next:

I am writing small library to get bitcoin unspent outputs for an address and to sign bitcoin transaction.

Then will make small test website, where
- you put in skycoin address
- server generates a deterministic bitcoin address to send coins to.
- server waits for transaction to clear and then sends Skycoin

That will make sure that bitcoin/skycoin transactions are working. (There is minor issue with transaction injection and transaction status in the skycoin client that has to be fixed, where transaction takes too long to propagate if transaction was created before the node is connected to any nodes in the network). We also need improved transaction tracking and status for users and for exchanges.

Then can do order book and will have a full exchange and liquidity.

---

Then can finally do the meshnet/darknet/vpn prototype first version. I want to get something working very quickly, but it may not be mature for a year or even two years, before there is nothing left to do in terms of architecture and scope.

- There is no cross platform implementation of ncurses for terminal applications and other hassles.
- There is no cross platform VPN frontend and it will only run on linux initially.
- Applications like Bitorrent will have to be ported to run directly/natively in the name space (like they do in Tox and I2P)
- Decentralized versions of applications like instant messaging, email, twitter, facebook, youtube will eventually have to be written for the network namespace
- a go like scripting language may be needed for application development, networking
- we may need something like "angular.js for terminal applications" and a cross platform OpenGL terminal with standardized interface for controlling the terminal over the network
- there are open problems with how payments should be settled, pricing, preventing artificially induced scarcity in the coin economy that would restrict network expansion (applied economics, multi-agents simulations, cybernetics, economy design)
- etc..

Over the next decade, the whole internet is being rewritten from scratch to address the current challenges it is facing. There are dozens of protocols under development, such as
- IPFS
- tox
- bitcoin
- cjdns
- aether
- telehash
- bitmessage
- namecoin
- bittorent-sync
- dozens upon dozens of others

We are in the middle of an internet reformation and second wave of decentralizatoin.

- We are seeing the first community meshnets being built in Athens right now, using crude software and duct tape.
- The first radios and networking equipment for practical meshnets are being released or have been released in the past six months. Small local ISPs, bridging the last mile are proliferating
- the existing generation of privacy tools and VPNs will soon be rendered useless by government blocking technology now being installed and a new wave of patriot act bills being passed passed in nearly every country globally (and even being pushed at the UN level)
- We are seeing global cyberwar, with governments and corporations block or degrading access to blocks and content they do not like and trying to weaponize the internet as an instrument for thought control, surveillance and oppression
- The TPP will completely destroy the public internet.
- The existing internet is susceptible to balkanization because it was not designed to be immune to politics. Companies like Google and multi-nationals see what is happening with the public internet and are already using their own MPLS installations and dumping money into Software Defined Networking infrastructure.
- The UN and communist run organizations funded by third world dictators are trying to take over the standards committees and seize control of the internet. They are proposing taxes on international internet traffic (so that a country's regime can exercise monopolistic control over all content/knowledge/severs/information/books/movies/television/content in the country). The existing internet will not survive in its current form for another decade. We are seeing each country building their own North Korean like internet, so that dictators, corporations and bureaucrats can dominate and control it.
- Internet kill switches, biometrics, DNA databases, backdoors in everything, mass surveillance built into every television, internet enabled light bulb, laptop, computer and cell phone. Building blocks for a new dystopian totalitarian police state. The western governments will not stop the mass shootings and terrorist attacks, until there is not a single right left to take away.



I cannot exaggerate what politicians are attempting to do is.
- tax international internet traffic
- ban encryption
- ban anonymous speech
- ban anything governments/politicians/corporations/bureaucrats cannot control
- global internet tax to fund UN internet occupation force and UN internet police
- make criticizing corporations illegal. Make users liable for any speech that hurts corporate profits (TPP treaty)
- Hillary Clinton's "Manhattan Project" to stop internet encryption

So I think this will do well. We are heading towards a world, where the surface internet is becoming a corporate shit net for stupid people and anything worth knowing is being pushed underground by governments and corporations.

Economically, we are passing the inflection point, where it is cheaper for communities to build their own internet infrastructure and own the infrastructure, rather than having monopolistic ISPs with poor service and 98% profit margins.

The practical problem, is that no one has ever built anything like his before. Enough of the pieces have been solved by different project, that most of the risk has been removed, but integrating them into a new piece of software will still be work. Especially for the UI components and what cannot be automated completely by machine.
hero member
Activity: 784
Merit: 1000
December 22, 2015, 03:13:09 PM
The mesh network is a pretty exciting stuff and I can't wait to see the implementation. (The DEV is pretty spot on with the hardware security, but I still suggest to explore the ARM TrustZone route, that provides sufficient hardware level security).

Anyway, Merry Christmas and I wish a very productive Happy New Year!
jr. member
Activity: 44
Merit: 13
December 21, 2015, 07:52:34 AM
When can we see the code?
hero member
Activity: 498
Merit: 500
December 20, 2015, 10:26:23 AM
Skycoin is pegged to Bitcoin, so it is up about 2x. From 10 cents per coin to 20 cents per coin.

Exchange GUI is in progress.

This^ peg is in reference to the ICO/IPO only, right?   Undecided

Yes.

The exchange will be Bitcoin to SKY, so its just fixed rate and then will go up from there as it floats. Pegging to USD is unfair to early investors, if Bitcoin is going up.

The ICO will still be open until it floats. I want to get exchange done ASAP because lack of liquidity is driving me insane. It is too frustrating to trade right now.

---

In the longer term, what is happening, is that the internet is being balkanized by the UN, ICANN, US, Canadian, Australian, Chinese and European governments. The internet in its current form wont exist. This is not so much a VPN/darknet/meshnet as an independent space, that cannot be balkanized by regulation. Corporations and governments are already putting routers in place to drop traffic to particular websites, or interfere with DNS requests and to actively harass/disrupt users of particular websites. It is beyond surveillance and descending into a full scale cyber war.

It is not just affecting internet traffic in that country now either, it is affecting all traffic going through that country from any destination to any other destination. It is a full scale cyberwar on independent media and against bloggers and bitorrent, under the TPP and the new patriot acts that Canada, Australia, Europe and the United States have passed.

It is very important that the skycoin node and software defined networking primitives get implemented.
hero member
Activity: 498
Merit: 500
December 20, 2015, 10:22:17 AM
Update:

I am going insane.

There are three major goals/milestones right now
- get crypto port to golang finished (so we can do cross platform builds)
- get liquidity (exchange platform)
- VPN/meshnet/darknet prototype or version 1 release

Crypto:
- someone else (two other people using the library) is working on the crypto bug (which only affect 1 in a few thousand keys). When they finish it, we will test it again.
- then we will set this up https://dzone.com/articles/releasing-cross-platform-go-binaries-using-goxc-an
- we will have automatic cross platform builds

Exchange:

I need a command line environment for doing particular things and testing. Then can expose the data and commands as JSON over local host and someone can do a web interface.

There are many small, very frustrating tasks that need to be done in order to get this working.

There are major changes to software ideology, architecture, simplification and how the user interacts with software. Skycoin is stuck in between the generational changes, in that particular things are needed, that do not yet exist. Most of the time is spent building tools and scaffolding, that later things are built on.

Meshnet/Darknet/VPN:

The version one is designed. The simplest thing is just wrapping and forwarding packets. Then tagging on a VPN frontend or the networking interface (which we already have).

This part is actually a set of small infrastructure pieces including a terminal environment (interface standard), a scripting language, a virtual machine (machine/node standard).

This is something completely new and may not make any sense. It is a framework for dealing with the problems of building a type of application that currently does not exist and has never existed yet.

- The first generation was single user mainframes (single processor,running single program)
- The second generation was single user mainframes, with ability to switch between programs (single processor, time sharing)
- The third generation was multi-user mainframes (single processor, multi-user, time sharing between programs)
- The fourth generation was personal computers (individual computer per person)
- The fifth generation was networked personal computers (individual computer, per person, multiple applications per computer, inter-computer communication)

In the next generation a person will have a "personal cloud"
- will have six tablets
- will have two laptops
- will have six block storage devices on their personal network
- will have half a dozen routers/access points
- will have appliances
- will have networked microprocessors in their shoes and clothing
- will have thirty speakers, each connected to network, with individual CPUs
- will have a fleet of robots, Roomba or other self-mobile devices attached to network
- ...

You end up with a network, where each device in the network has
- processing
- memory
- networking/communication
- storage

Where an individual may have control or at least read access to several hundred devices, which expose heterogeneous capacities.
- tablets/laptops/screens run GUI/display driven applications
- block storage devices read and write files over the network
- speakers play sound over the network
- thermostats and light-bulbs export data and expose an interface
- etc...

In the current generation, where someone plays an mp3 on a tablet or laptop
- the interface is on the tablet
- the song being played is stored on the tablet
- the song is played outputted from the tablet

In the next generation
- a person selects a song on a tablet (interface)
- the song itself is stored on a disc drive (which has its own CPU and is networked) (not on the tablet)
- the song is played on six speakers in the room they are in (which has own CPUs and are networked)

The interface/command node is different from the node where the file is stored and is different from the action (playing mp3 through speaker).

When a television plays a movie, the movie will be streamed from a disc over the network. There is a unified view of the data, that is accessible everywhere. There is no distinction between local storage and capacities and remote capacities over the network.

These types of applications are beyond "Peer-to-peer" and are "Decentralized" or "IoT" type.

The Skycoin Meshnet/Darknet/VPN/Software Define Networking/Node is one of these applications. There is a minimum framework required, to write an application of this type, which currently does not exist.

....

The most horrible part about this, is that the time consuming parts do not matter. All of the time is wasted in debugging, fixing small things. The important things are done quickly and the trivial, takes 20x as much time.

For the exchange, I have to get gocoin working for checking address balances, signing transactions and injecting the transactions to the network. I need to add more URLs/functions for checking if a transaction has executed, to the skycoin daemon.

I need an eval/repl loop for the exchange client which is frustrating. The libraries are shit. I almost thinking of writing an opengl program for displaying grids of characters, then a whole library supporting it if I want scrolling with mouse wheel or refocusable widgets (but do not want to write anything if possible).

Just something as simple as a cross platform console or equivalent of ncurses, does not exist. It is very frustrating and maddening.

I am considering an interface in javascript/html, just to finish it quickly.

Ideally I would just like an embedded golang/REPL library that works well. That would solve my problem.

https://github.com/sbinet/go-eval
https://github.com/sbinet/igo
https://github.com/vito/go-repl
https://github.com/motemen/gore

For javascript/html interface, it polls with get/post, but need way to send an event back from the application to the web-browser. This is called "push notifications' or WebRTC.

I have to decide whether the interface should be Angular.JS or just use jQuery or application specific/terminal.

I still have not idea

Writing this interface is a horrible nightmare. It is 5x more work than the exchange back end. This is pure insanity. I cannot believe I have spent two days on this already.
legendary
Activity: 1098
Merit: 1000
Angel investor.
December 19, 2015, 06:14:13 AM
Skycoin is pegged to Bitcoin, so it is up about 2x. From 10 cents per coin to 20 cents per coin.

Exchange GUI is in progress.

This^ peg is in reference to the ICO/IPO only, right?   Undecided

How does so-called "peg" work? Sir
sr. member
Activity: 994
Merit: 260
December 18, 2015, 04:04:16 AM
Good news coming. I love it  Smiley
hero member
Activity: 498
Merit: 500
December 18, 2015, 02:48:56 AM
Update:

Skycoin is pegged to Bitcoin, so it is up about 2x. From 10 cents per coin to 20 cents per coin.

Exchange GUI is in progress.



- The exchange client is a very light weight terminal application.
- When exchange app starts, you put in your pass phrase for deterministic wallet generation
- It communicates with exchange over encrypted channel.
- You can transfer between local wallet and the exchange very easily

- As long as you remember you wallet password (the phrase that generates the wallet), then you can access the coins from anywhere.
- There is no physical wallet, on disc that can be confiscated or even proven to exist

Example 1:
- start exchange
- put in key for deterministic wallet generation
- send Skycoin to exchange from local wallet
- sell Skycoin for Bitcoin
- Send Exchange Bitcoin to remote address
- Pull remaining skycoin back to local wallet

Example 2:
- start exchange client
- put in wallet generation pass phrase
- check bitcoin balance for local wallet
- send bitcoin from local wallet to an address (sign transaction, inject transaction)
- close exchange client

This is not really an "exchange" or a client. It is more like a bloomberg terminal for Bitcoin/Skycoin.

You do not need to "login" to the exchange with a user name or password
- your public key authenticates your identity

Cell Phones, Windows 10 and all operating systems are backdoored.
- This will eventually run on a MIPs or ARM processor, that is not even running an operating system.

There is an RPC between the client and exchange server. There are a small number of actions on the command channel.
- Check BTC balance [address list]
- Check SKY balance [address list]
- Withdrawal Bitcoin (pull coins from local wallet)
- Deposit Bitcoin (push coins form local wallet)
- Withdraw Skycoin (pull coins from local wallet)
- Deposit Skycoin (push coin from local wallet)
- Place Bid/Ask (update order book)
- Cancel Bid/Ask

Then there are events such as
- order book updates
- coins received into address
- pending withdraw completed (transaction executed on blockchain)
- bid/ask order executed

The command and event channel are asynchronous and will run over anything that can send bytes. In this case I am running over uTP.
- Bitmessage
- IRC
- TOX
- Torchat, etc
- email
- SMS
- tor

Eventually it should be possible to have multiple transports and go hop to hop from nodes to communicate with a destination designated by a public key hash (purpose of the darknet/meshnet/vpn).

This is moving away from
- no dependence upon the operating system
- no dependence upon a web browser
- no dependence upon DNS
- no dependence upon HTTPS
- no C code that can be buffer overflowed (memory safe)
- no external library dependencies (4,000 lines of code)
- easy to extend or modify

Maybe will have a command line for getting the unspent outputs for an address or creating transactions by hand.

Right now, the exchange just has to replace bitmessage for buying/selling, because it is too slow and frustrating.

This is also a test, to see if this is the right interface type for darknet/vpn/routing administration.
sr. member
Activity: 291
Merit: 250
December 17, 2015, 07:40:54 PM
Lol probably it is one of the threads where i am learning more really interesting things , thanks guys

+1
Definitely the best out-of-the-box and 'rethinking' material I've encountered in my lifetime.

Edit: and i'm very happy from being a follower [and small contributor] to this project.
It has had profound influence on my current life and attitude to life.
THANKS Skycoin!
legendary
Activity: 966
Merit: 1000
December 16, 2015, 07:56:24 PM
Lol probably it is one of the threads where i am learning more really interesting things , thanks guys
hero member
Activity: 498
Merit: 500
December 16, 2015, 07:05:04 PM
Update:

The cryptography port problems are taking too much time. I am getting sick of trying to figure this out and want to move on to next thing. I need to take break from this and do something else for a while.

This requires going line by line comparing against the SIPA implementation and figuring out why there are different outputs for certain inputs.

The exchange is done, except for gui and the crypto library port for cross compilation for windows/osx.

hero member
Activity: 498
Merit: 500
December 16, 2015, 02:10:33 AM
Update:


Crypto Library:

Bad news, the crypto library problem is severe. In the new upgrade the public key for 1 in 1200 private keys will be different. To standardize it to Bitcoin. Only one or two people should be affected and we will replace the coins if they are unable to get them out of the wallet and send us the private key.

Every single crypto library outputs different values for the same inputs for a subset of the keys and it is extremely frustrating.

We had fixed signature malleability before MtGox went down or anyone had heard of signature malleability, but we did not expect that raising the base point to a given power, would give different public keys between implementations, which would pass validation.

There are unit tests, that you do not write because there is no way they can fail, but if you try them for random inputs they often fail. Some of the bugs are incredible, such as implementations returning the same public key for a private key, but the public key fails validation and signing a message succeeds for that private/public key pair, but validating it fails, but the signature operation returned without error.

This is extremely frustrating, because we assumed that these operations were deterministic, standardized and mathematically sound. The equations used, give no room or latitude between implementations, so we have no idea how this happens.

This is also an immense time sink and extremely demoralizing. I fixed sixteen things and then thought I was on last one, but then find two more.

One of the bugs was so severe, that if the library was used in the exchange, then 1 in 16,000 Bitcoin addresses generated, would have resulted in addresses where the coins could not have been recovered from the address. Each Bitcoin project is using slightly different crypto libraries, with different versions and there are some bizarre edge cases.

Also, for EDCH key exchange, raising the power of a public key (a point on a curve) by a private key (multiplication), often givens different outputs. p*Q != q*P for some implementations or some private/public key inputs! This is insane.

There was a Snowden slide where the NSA bragged they could break any crypto currently in use and I believe it is because, if you input shit data, every implementation is currently bugged and spits out bits of the private keys. OpenSSH had bugs such as heart bleed, where you could just buffer overflow the library and read out the private keys or even do remote code execution. So every single HTTPS server with openssh, they can just buffer overflow it and root the box and steal whatever they want.

Each one of these bugs takes six to ten hours to find/fix and the last bug we are dealing with is so bizarre, that I have no idea how it is even possible. Many of these bugs, are similar to
- function does not return error, but the output is invalid
- function does not return error, output is valid, signature using output fails validation but succeeds without error
- ...

Exchange:

I am working on the terminal application for the exchange. This will be like a bloomberg terminal for Bitcoin/Skycoin. You can just put in passphrase and will load the deterministic wallet and can do operations.

NSA:

There are new types of cyber attacks appearing. DNS injection attacks. HTTPS websites being timed out. So if you try to access certain blogs, they will degrade service. You will be frustrated and have to reload page several times. The server ping will be 10 ms, but page wont load or will take 30 seconds.

There appear to be servers on the internet now, that are designed to fuck with people's traffic.

Twitter/Facebook are being locked down. If you tweet about leaked NSA documents, the tweet disappears on the line.
- http://members.efn.org/~paulmd/OwnWork/AdventuresinCensorship.pdf

Many people have noticed how bad the censorship filtering is getting.
- there is filtering at the cache/CDN level
- there is filtering at the Twitter level, where advertisers can pay to make bad things about them disappear and good things to appear, to "manage their brand". And allow governments/corporations to control people's minds by out spending truth.
- there appears to be on the line filtering, where content is being removed or modified between the webserver and the browser. If the government does not like a particular post or link to a website, they can just make it disappear.

DNS requests are unencrypted and encrypted DNS is being suppressed (the NSA and military relies upon it for a lot of metadata and military programs. they had wikipedia admins go in and delete/redirect the pages on encrypted DNS alternatives). Since the request is unencrypyed, it tells anyone listening exactly what websites you are visiting. Now, those requests are being modified, so accessing certain websites ends up getting you redirected to a server that just times out. It gets toggled on and off randomly, so it looks like the website is down, but it is not.

The whole internet is being turned into a corporate shit net. The governments are
- trying to rig the elections (destroy independent political parties, censor criticism of corrupt politicians)
- trying to censor the pedophile leaks from going viral
- trying to gain ability to control what their populations believe (psychological warfare)
- trying to protect corporations against being held accountable by public (mind control, thought control)
- trying to shut down Russia Today and Alternative Media
- building the capacity to stop information that the FSB or wikileaks may release later from going viral on social media platforms (ability to enforce media black out, links and posts will just disappear from other people's feeds, the posters -accounts will be silenced or isolated)
- building out spamming capacity, to attack and destroy online social groups they dont like, by flooding them with shill bots and diluting the content to level where users flee the platform. For instance, by flooding a blog with hundreds of shit or low quality comments to dilute out the good comments. They are just going to keep "churning" the platforms and scattering the user communities, to prevent another anon from forming and to keep people separated into small manageable groups that spend all their time fighting with each other. Dozens of techniques like this are being developed and used (capacities), by governments, political organizations and corporations.
- building out router/infrastructure capacity to shut down or control applications such as BitTorrent, Tor, Bitcoin, messaging applications, VPNs

The internet is being weaponized in a fascist corporate/government takeover. Every single protocol they can subvert, they are doing that or testing the capacity. Every single meter of control or power control over the internet they can take, they are seizing it.

This is article by one of the pirate bay founders. There is civilization collapse level nihilism here.
- http://motherboard.vice.com/read/pirate-bay-founder-peter-sunde-i-have-given-up

The good news, is that the next generation internet protocols will be immune to these problems. They are in progress.
sr. member
Activity: 291
Merit: 250
December 14, 2015, 05:41:45 AM
So in essence, there is always some elites behind some ideological/ national entity, pursuing world control...

period:   Seeking to expand control    
====   ===============
13 century    Medieval Inquisition
14 century    Byzantine Empire
15 century    Ottoman Empire
16 century    Spanish [colonies]                
17 century    Russian Empire [also Holy Roman Empire - Protestant vs. Catholic]
18 century    France [Napoleon]
19 century    UK [colonies]
20 century    USA [Nato, Consumerism]

China also built a vast empire under the Ming Dynasty, but they distributed power rather than concentrate it.
I guess today everyone is betting on China reviving as the 21st century mega power.
But "everyone" is usually wrong...

sr. member
Activity: 291
Merit: 250
December 13, 2015, 03:55:38 AM
This has a long history, for instance the Protocols of the Elders of Zion were written by two members of British intelligence as black propaganda and then disseminated to the leaders of Europe.

By two members of British intelligence? It was published in ~1902 in Russia, in Russian (translated to English only in 1919)... I know it places Great Britain far from the crime scene, and above any suspicion, but it still sounds remarkable forward-looking... decades ahead...
First time that i've encountered such a claim. Do you have any resource / link to further look into this?

... to start a war, so that they can take control over oil pipeline routes.

... Oil will no longer be a constraint on economic growth

First of- either this or that...
The elite are not stupid. They understand that oil is history, just as they understand banking is history. So starting a war to control fast depreciating in relevancy infrastructure? Seems too simplistic
At the end of the day, most of the countries in the Middle-East are huge sand-boxes with oil underneath. When oil becomes obsolete, they are just sandboxes.
I know you wrote is one of the previous posts that control of infrastructure is the future, and I totally follow, but but oil infrastructure seems obsolete if not now then in a few years as the Grid Parity threshold goes lower and lower.
hero member
Activity: 498
Merit: 500
December 12, 2015, 02:17:28 PM
Update:

I want to kill someone. Fixed dozens of bugs with the crypto library port.

The sipa and gocoin libsecp256k1 implementation differ slightly and output different public keys for the same private key for some inputs (every few thousand keys).

Slightly different public keys are outputted for the same secret key.

seckey  = 8ba2269ad9d5090c891043dcbda618802d50bbfd7aa548173a9ecb5d2107ffbc
pubkey1 = 02ec9b470f72b4a28d1ae507d7c8ddfa5c5385db96e905400175093e48ef5ace0d
pubkey2 = 02ec9b470f72b4a28d1ae507d7c8ddfa5c5385db96e905800175093e48ef5ace0d

seckey  = e329e5d4f6224566c3464dbe16bdae499566504d7cbca6b77274f835e4838c7e
pubkey1 = 022c3166ffaed91846653d0179b2daf467d0a736e94ca1c0020cd165881aeee572
pubkey2 = 022c3166ffaed91846653d0179b2daf467d0a736e94ca200020cd165881aeee572

seckey  = 27fa25141c11169208c822e8bb6a1dcd3f991dfd20f393a184498434695e0e14
pubkey1 = 03bd957a507e3f7fdeeb7487613acfbd931a600f9d0806000042fc54bc548a2e05
pubkey2 = 03bd957a507e3f7fdeeb7487613acfbd931a600f9d0806400042fc54bc548a2e05

seckey  = 7ab1d121b0884002b583dec1a48d7dec5f8677836b1bbb77701b1a581a6f2398
pubkey1 = 02532980c1d8c8f2989a31e4b412705da65c60ab6f6b6ac0018ed87f3d080d77c3
pubkey2 = 02532980c1d8c8f2989a31e4b412705da65c60ab6f6b6b00018ed87f3d080d77c3

seckey  = e56e99ebef0383058765e780dd1f7f5b3dfa6dffe47e545cf4c2a0d908b9c06d
pubkey1 = 021e41e0ad1778ad20aaa2d4c3780973f330f002b292a54001da80e4e467c4f742
pubkey2 = 021e41e0ad1778ad20aaa2d4c3780973f330f002b292a58001da80e4e467c4f742

The only contractor who knows what library is doing, cant/wont help because it is too time consuming. It took about 6000 lines of unit tests (almost larger than skycoin), just to find all the bugs. I cannot release it until the unit tests for deterministic wallet generation pass.

If you raise the same base point to the same power, you should get the same public key. It should not differ between implementations, for some small subset of keys.

I cannot describe how time consuming this is.
member
Activity: 123
Merit: 10
December 11, 2015, 12:05:58 AM
Is SKYCOIN dead?
I want my BTC back!

No, it's not, it doesn't die even you died.
hero member
Activity: 784
Merit: 1000
December 10, 2015, 10:44:12 PM
You frightened me above with the reference to the water and become eunuch and hermaphrodite from the water. Fucking hell. Crazy and heavy stuff, we need to be careful in looking after our dicks.
hero member
Activity: 784
Merit: 1000
December 10, 2015, 10:41:12 PM

If you use the same private key, you should get the same public key. Between two different secp256k1 implementations.

This is not happening! It is failing. We wrote 80 unit tests putting random examples in and they do not match up. We have to go line by line, figuring out where it fails and why.


Yepppp. That is always happening. Long-long time ago, when I was young and needed to work, I did quite a lot crypto programming and ran into this problem all the time with ECC curves. Most of the time it was the big integer library. Then I found the Miracl library from the Irish Samush guys which software worked like a charm. Very stable and nice piece of software. I believe, I still have somewhere the source and I can send it to you, but they are on Github as well (I think Certivox had acquired the original Irish company). As you are using the fucking Go language, of course the Miracl library won't be very useful for other than using it as a reference point, but if you follow the implementation of Miracl and create your Go implementation based on that then you will be on the right track. If you would use Nodejs or C instead of the Go thing then the Miracl library would solve your issues.
hero member
Activity: 498
Merit: 500
December 10, 2015, 08:51:11 PM
Update:

The crypto library is not deterministic. It is failing for every one in twelve thousand keys.
- A private key should be a 32 byte integer, that is not zero and which is less than the order of the curve.
- The base point is raised to the power of the private key, to generate a public key

If you use the same private key, you should get the same public key. Between two different secp256k1 implementations.

This is not happening! It is failing. We wrote 80 unit tests putting random examples in and they do not match up. We have to go line by line, figuring out where it fails and why.

- It is absolutely exhausting
- It is extremely time consuming
- When it is done, the program will do exactly the same thing it does now (it is just replacing a library in C, with a library in Go that does exactly the same thing)

An example, is that a square root operation may fail for some input in library 1, but in library 2 the square root operation does not fail and the program gives a different output.

Getting the cryptography to be deterministic has been a nightmare.

Every single crypto library we have tested has had a few bugs. Sipa's library was perfrect, except for small crash for certain inputs, which he fixed. We put redundant error checking everywhere
- check that same private key generates same pubic key for same implementation (across large number of random keys)
- check that same private key generates same public key for different implementations
- check that signatures/recovery works for large set of random keys
- check that invalid keys are rejected (negative tests)
- test that randomly generated invalid signatures are rejected (negative tests)
- ... 80 other tests

Most of the library succeed on the positives (they work), but they often fail the negative tests.

...

I will be happy when this is over.

We are working with two other companies now, who have similar infrastructure/needs and they are sharing developers.

Research

In past four months, we have made some research advances.
- architecture for how meshnet/darknet needs to be implemented (no fixed program will work in long term, so collection of small specialized programs and method of chaining them together into useful system)
- primitives for network node (how to structure it so there are as few primitives as possible and they are easy to understand and implement)
- interface for how user will interact with software. Bitorrent is P2P, but it is still a single application running on a single machine. This type of network requires user to interact with +300 nodes, each independently running their own software and communicating together. Allowing users to interact with system and have introspection into what is going on, is difficult. If the user cannot see into the software and see what it is doing, they cannot fix it when it breaks or gets blocked. We decided console/terminal interface is best.
- we decided that users need to be able to perform introspection and monkey patch software if necessary. If it is not working, it cannot just show red circle like VPN GUI. They have to be able to see what is working or not working, then be able to take actions to fix or mitigate it. It is impossible to automate completely, handling many network situations.

Some of these issues, are issues I have with other software. Such as Bitmessage getting blocked if traffic goes through certain countries. Governments are beginning to block bitorrent. They will not just block bitorrent, but any traffic transiting through that country will be blocked also. The internet will fragment into hundreds of pieces and whether you can connect to an IP address will depend on where you are trying to connect from, the destination and multiple harassment, degradation and connection throttling way points the data has to travel through.

You wont have a single IP address. Application A will tunnel through to node B on protocol B1 and then from node B to node C using protocol B2 to country C. Application B will be running on a different pathway.

There are scripts for tying the paths together, or multiplexing multiple paths for higher bandwidth. Each hop on a path is a route.

Another major innovation (which is very significant), is that we figured out mathematically how to use one way asymmetric data links in the network as the basic primitive. This means that Node A can only send data to Node B, but node B cannot communicate back directly.
- military and intelligence applications will benefit from this, but does not affect most users
- This means for rural areas, you can take a wifi transceiver and an amplifier and boost the signal to illegal power levels. You can send data over 50 km and receive it on other side, but the weaker receiving antenna wont necessarily be able to send a signal back that can be picked up.
- A powerful HAM setup may be able to transmit long range and get picked up by a handset, but the handset does not have enough power to transmit back to the mega antenna

Military and intelligence often use systems like this
- A large radio receiver transmits a numbers station over a whole country
- The signal can be received by innocuous civilian radio and the message transcribed and decrypted
- a dead drop or another message channel is used to confirm message receipt, which eventually get routed to the station chief

The transmit and receive channel are not the same.

Satellite internet also uses an asymmetrical channel
- the satellite beams data to the local user at an extremely high rate
- the user communicates back to the satellite over a telephone line

Asymmetric connections are too complicated for normal users, but some organization have a use for them. For instance, if operating in country with blocking and extensive traffic analysis, messages or data feeds can be embedded in Youtube video. The access pattern looks normal and wont get someone tortured or flagged for interrogation.

Another thing is protocol tunneling. The encryption and encryption is very general. There is a just a script that the length prefixed messages get encoded by and then passed on.
- for an internal corporate network, you can have private keys and what application opened connection from what computer  and have deterministic private key generation so that the traffic can be read by exit point for policy enforcement
- you can swap out encryption algorithm just by changing script

An example of script chaining is
- a script that outputs binary packets as markov chain text (make it look like email/chat conversation)
- a script that tunnels the connection over AIM/XMPP/Skype from username/password to destination account

Another concept is called "idiotypic selection".
- You choose a metric/goal
- You choose a set of methods of solving problem
- the software chooses the best method for the current situation

For example;
- You are in Virginia piloting a drone in Afghanistan
- There are multiple satellites and ground stations you can bounce through
- The drone may be in range of a military base with ground radio connection and the drone also has lower speed direct satellite communication
- You want software to choose path that has lowest latency, but lowest jittter. So 100 ms latency may be better, than 50 ms latency with plus minus 50 ms on each packet.
- The software will make multiple paths and dynamically try to minimize target by changing traffic flow and opportunistically using connections as they become available or go out of range

If the software performs badly, you can still go in and set a route by hand or set multiple routes by hand. For instance, if a transceiver becomes congested and stops sending packets for seconds at a time, you might explicitly blacklist that path. Changing the network policy, should be a few key strokes in an environment that looks like Dwarf Fortress.

There is a feedback loop between the human/computer system
- user can set policy script that will behave automatically (default automatic behavior)
- user can see results and introspect operations graphically (introspection and feedback)
- user can make strategic action inputs into system if needed (actions, policy changes)

For a VOIP call, you want low latency, but you do not want network cutting out every four seconds for one second. The delay/latency should not change from 1 second to 4 seconds and go back and forth, but should be constant.

"idiotypic selection" is important not at the single node level, but for the system as a whole. A communication system may have dozens of users and consist of hundreds of radios, fiber optic links, free space communication paths, satellites, aircraft and ground installations.
- The communication network will have multiple users with competing uses
- A user cannot manual configure or control hundreds of nodes, so default and automatic policy is important

"idiotypic selection" reifies the "system of systems", into a single system that can be acted upon. Each node sends state and performance information to other nodes, who can aggregate that information and then make changes to nodes lower in the network to achieve performance objectives.

The simpliest idioypic selection algorithm, might be (one armed bandit)
- if there are 12 wifi channels
- flip through different frequency channels to find the one that works best

For instance, some Ghz frequencies work very well, except when it rains and then they are useless. Or 700 Mhz penetrates very well if you are inside in concrete building, but if you have line of sight then you will use other frequencies.

A frequency for wifi may work very well, except at certain times of the day or when it is congested. Going over 50% channel capacity utilization, can cause Ethernet frame collisions with other devices, causing endless cycle of retransmission attempts and collisions, or bursts of network outage or competitive transmission power dynamics that are pathological (such as wifi connection working very well, but dropping every 20 seconds or sporadically).

At a basic level the "Do random things until it works" strategy can be automated. So a soldier or cell phone user is not sitting there, fiddling with settings and hitting buttons or connecting and reconnecting to the VPN until it works. This works when you have a finite, enumerated lists of actions and the software measure whether its working.

Look at the military requirements and systems the DoD has used and naval communication systems has helped a lot.





They want
- horizontal links between devices at each layer
- vertical links between layers
- dynamic network reconfiguration

This type of networking, is impossible in the existing paradigm. You cannot achieve this with IP addresses and BGP. IPv6 did not solve multihoming. It requires new types of routing and address space, I proved that a year ago.

When different types of networking were being chosen in the early internet, the NSA must have looked at CISCO's packet switching technology and said "We can do this, then route all the traffic through the US and intercept everything". Certain companies were bought out, shutdown. Certain protocols like end-to-end opportunistic encryption were stifled from being standardized. Certain protocols like IPSEC were compromised.

Centralizing control of information, surveillance was a means of obtaining and maintaining power and hierarchy. The technologies were carefully steered and other technologies prevented from development. The groups that exploited or benefited from this, where clandestine and outside or above the state. The "NSA" was just pretense to put the capacities in, but they were left wide open (which is reason for current OPSEC and cyber-security problems, they were by design).

The next generation internet for IoT, has particular properties and there are few ways to meet the requirements. You can enumerate the properties/structures of all possible networking systems and protocols at an abstract level, using category theory.

There is not a choice. You end up with a very simple form of  software defined networking. You end up throwing out all the crap the existing network is built on and get two or three primitives. Even if you use IPv6, you are only tunneling the native protocol over it.

The governments will try to "pass laws" or backdoor the devices, ban encryption or monitor all the traffic somehow, but from a mathematical perspective, there is a futility to it. They might as well try to pass a law banning odd integers or changing the value of pi and then try to force that on people at gun point. Despite the futility, they will try anyways and will get laughed at.

"We flooded the country with 3rd world immigrants and had them stage terrorist attacks to get this bill passed and what do you mean its 'not enforceable'!?".  We have seen this before.

Meshnet/VPN/Darknet

I have a simple scripting language, that you can write on a napkin, with three types (uint64, uint32 and []byte) and structs. C like, very similar/identical to golang but may simply syntax.

The routing is very simple.

I want to get to this soon.
newbie
Activity: 1
Merit: 0
December 10, 2015, 12:23:39 PM
skycoin lets suppose that what you have written is true and lets be generous and say 10.000 people read all of your posts and understands how by your description world works. All you have given them is negative, paranoid, deterministic outlook of the world and made them less productive because of induced fear paralysis. If I take your posts as fact, than I must come to conclusion that we are powerless against them, even if there were millions of us we would just get assassinated or subdued with chemicals. So path of activism is not looking so bright.

But then there is fact that all of the world governments are so large that they need few millions a week just to sustain basic functions. So larger and more centralized that government is more vulnerable it is if we stop the flow of money. So we just have to locally organize society around decentralized cryptocurrency and show people that they don't need governments worthless fiat paper and its shitty "services". The rest will fall like domino and people will adjust their behavior to new incentives that will be market driven and not driven by central coercion.

So the logical conclusion would be that you concentrate your efforts on building skycoin and not use your time on “waking” up people. Also people that are on bitcointalk are in majority against coercion based government so you are really preaching to the choir. I hope I am not just speaking for myself, but I would really appreciate more technical posts about skycoin and how it ties into real world use cases.

Thank you for all of your hard work I really appreciate what you and your team are doing. This is currently one of the most important projects for better future. I hope you will consider the argument I made and I could be wrong but at least consider it.
Pages:
Jump to: