Pages:
Author

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

hero member
Activity: 498
Merit: 500
May 10, 2015, 03:21:14 AM
Development Update:

I hate computers.

I am trying to do something very simple. I am trying to get the balance of a Bitcoin address against a remote server, from Golang using a thin client. It is impossible. I have to write the server/client and wrap libbitcoin because it does not exist.

In Skycoin, I can go

http://skycoin-chompyz.c9.io/outputs

And I can see list of output for all addresses against a remote full node and get the balances for addresses instantly.

If I am a merchant and I need a thin client, to check addresses for balance changes, I
- keep a counter (integer) for last block I have seen
- I query http://skycoin-chompyz.c9.io/blockchain and look at "seq" (the block height)
- If I have only seen blocks since 160 and it is at 165, then I get the next block with http://skycoin-chompyz.c9.io/blockchain/block?seq=160 and I keep doing this until I am at the head. I scan each block for transactions I am interested in.

So in Skycoin, I can keep a map of addresses that I am watching for incoming transactions, then I can "walk the chain" and pick out those transactions with a thin client. I can have a billion addresses on the watch list and the map lookup operation is constant time.

In Bitcoin, I am just screwed only thing that has come close to enabling Bitcoin to be usable for developers is libbitcoin and there is not a golang wrapper yet.

I expect the bitcoin client to be hacked. It is going to be buffer overflow attacked. So I want the nodes running the full nodes to be separate from the the user wallets (which should be able to operate as full nodes or thin clients), so that an intentional OpenSSL bug does not loot the Bitcoin private keys. I should not have to run a full node to get balances and inject transactions.

The best solution is to wrap libbitcoin (address unspent balance check and transaction injection), then expose that over a golang RPC. So we can have nodes that are exposing a golang RPC thin client interface. Two functions "get unspent outputs for these addresses" and "inject transaction". Then we craft transactions and handle private key storage on the local computer. This is exactly the same as electrum architecturally but would be a programmatic API that other applications (like the Skycoin wallet) can use.

We might be able to do a libbitcoin RPC in golang. There is very little documentation, but someone is looking into that.

Why we need this:

This infrastructure is required for several things
- we can generate bitcoin addresses deterministically with `go run ./cmd/address_gen/address_gen.go --seed="passphrase" -n=3 -b`



- If you change n, you can generate as many or as few addresses/keys as you want
- if you put -b, they are bitcoin addresses, if there is no -b, they are skycoin addresses
- if there is no --seed="" it will generate a 256 bit seed for you

So we can generate addresses, but cannot check the Bitcoin address balances or send from them yet. As soon as this is done running a brain wallet will be
- pull from github
- run command with pass phrase, then can do balance check and send (in Bitcoin or Skycoin)
- there may be a terminal gui type interface (golang termbox or other terminal interface libraries)

This toolchain completely eliminates the need for wallet files or computers for transporting Bitcoin/Skycoin.

This is being designed to run on portable open source ARM software/hardware, like a raspberry pi. This will be even easier once the crypto library port to pure golang is done. So this tool chain should enable secure hardware wallets. There will be $9 to $20 single chip ARM computers that can run the tool chain soon.








A hot wallet would be loaded from a deterministic wallet seed, then discard the seed and only retain the private keys/addresses. A cold wallet device would load the seed from a secure input device, load keys into ram, do operations (check balances/send) and then forget everything.

Yesterday we throught "it should only take 20 minutes to build one of these devices", but we cannot, because bitcoind is missing API functions and there is no golang library that has them.

We have the private keys, we have the address, we need to
- get the unspent output set for the Bitcoin addresses
- create a Bitcoin transaction, sign it with the private keys, dump it as hex
- inject the transaction into the network

We cant even do that without writing new custom software. This is insanity.

If anyone knows where the documentation is for the libbitcoin zeromq interface wrapper, that would help.
legendary
Activity: 1044
Merit: 1050
May 09, 2015, 11:29:55 PM
The ico process seems difficult for noobs.
sr. member
Activity: 420
Merit: 262
May 09, 2015, 11:14:32 PM
The objective is to prevent the sybil nodes from controlling propagation of transaction, block and consensus propagation.

That is the Achilles heel of your current consensus design. You will eventually have to abandon it and move to my solution. We should be synergizing, because my solution was inspired by the discussions we had upthread.

https://bitcointalksearch.org/topic/m.11327393

(read my posts from the linked post to end of page 1193)

Also for all your impressive technical prowess, it won't help you solve the marketing hurdle that no altcoin has surmounted. You need my combination of design, marketing, and coding skills. But can our egos co-exist?

Skycoin, seriously it is time to stop messing around. Why are we not working together?

Before I asked you to have a discussion on BitMessage but you did not engage. I am making one more attempt to ping you.
sr. member
Activity: 448
Merit: 250
black swan hunter
May 09, 2015, 11:12:07 AM
Here to download wallet client: http://128.199.188.22/

Excuse me i try to open the wallet but it is not working
Address_gen and Skycoin.exe nothing happen, what to do please?

Open it and then set web browser to

http://127.0.0.1:6420/

http://127.0.0.1:6420/blockchain/blocks?start=0&end=500
http://127.0.0.1:6420/blockchain
http://127.0.0.1:6420/blockchain/block?seq=0
http://127.0.0.1:6420/outputs
http://127.0.0.1:6420/transactions
http://127.0.0.1:6420/network/connections

Make sure you have at least one connection. Also make sure that seq in /blockchain is over 130 . That is head of current block


Unable to get new Skycoin to run on Windows 7 64bit:

Quote
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\user>"C:\Program Files\skycoin-win\skycoin.exe"
2015/05/09 09:09:04 Wallet Directory= C:\Users\user\.skycoin\wallets
2015/05/09 09:09:04 Wallet %s invalid: %v0x6120e0 filename not set
panic: Wallet %s invalid: %v0x6120e0 filename not set

goroutine 1 [running]:
log.Panic(0x128f3bb0, 0x3, 0x3)
        c:/go/src/log/log.go:307 +0x9b
github.com/skycoin/skycoin/src/wallet.NewWalletFromReadable(0x128a2c30, 0x0, 0x0
, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
        c:/chw/go/src/github.com/skycoin/skycoin/src/wallet/deterministic.go:55
+0x2e3
github.com/skycoin/skycoin/src/wallet.(*ReadableWallet).ToWallet(0x128a2c30, 0x0
, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
        c:/chw/go/src/github.com/skycoin/skycoin/src/wallet/readable.go:92 +0x56

github.com/skycoin/skycoin/src/wallet.LoadWallets(0x1290cde0, 0x1e, 0x0, 0x0, 0x
0, 0x0, 0x0)
        c:/chw/go/src/github.com/skycoin/skycoin/src/wallet/wallets.go:38 +0x436

github.com/skycoin/skycoin/src/gui.NewWalletRPC(0x98a3a8)
        c:/chw/go/src/github.com/skycoin/skycoin/src/gui/wallet.go:57 +0x23c
github.com/skycoin/skycoin/src/gui.init()
        c:/chw/go/src/github.com/skycoin/skycoin/src/gui/wallet.go:38 +0xcb
main.init()
        c:/chw/go/src/github.com/skycoin/skycoin/cmd/skycoin/skycoin.go:696 +0x4
a

goroutine 17 [syscall, locked to thread]:
runtime.goexit()
        c:/go/src/runtime/asm_386.s:2287 +0x1

goroutine 5 [chan receive]:
github.com/golang/glog.(*loggingT).flushDaemon(0x98b140)
        c:/chw/go/src/github.com/golang/glog/glog.go:879 +0x76
created by github.com/golang/glog.init┬╖1
        c:/chw/go/src/github.com/golang/glog/glog.go:410 +0x1ff

C:\Users\user>

Previous version from January 2015 ran fine. Any suggestions?
member
Activity: 103
Merit: 10
May 09, 2015, 09:05:28 AM
Is the IPO still open?

I haven't checked back since it started.
If so, what's the easiest way to buy in on a windows machine?
full member
Activity: 179
Merit: 100
May 09, 2015, 05:47:08 AM
Hello dev
Could you send me test coins to my address please xX1UUWjUMmCNEWv6ywvUrg9xePvhVwSat6
I'm not sure if it's working
hero member
Activity: 723
Merit: 503
May 08, 2015, 01:40:52 PM
Hello! Can i still participate in the IPO?
legendary
Activity: 1036
Merit: 1000
May 08, 2015, 09:53:33 AM
Hi
I see "Acknowledgement of the message received" but i did not receive any test coins
My skycoin adress is 2jNYhHCuqQtU8kKkLf8ZZmKj6fywTL7fw2e
Maybe i forget one step?

You received 1000 coins to 2jNYhHCuqQtU8kKkLf8ZZmKj6fywTL7fw2e in block 63
http://skycoin-chompyz.c9.io/blockchain/block?seq=63

If you are not syncing/downloading the blocks, check

http://127.0.0.1:6420/blockchain

Seq is the height of the current block. Timestamp is the unix time of the highest block. Networking is still being debugged and it is working reliably for 90% of users, but some cannot find servers to sync chain with reliably. I added high reliability servers to use as default and that fixed problem for some people, but others still have issue connecting to them.

See
http://127.0.0.1:6420/network/connections

This should show you network connections. You should make sure you have at least once connection (ideally multiple). We have to add option in gui to show this and allow adding servers by hand.

We also have to re-enable the indicator for whether the local block chain is syncing or has synced with network.

Hi skycoin,

Just wondering if it will be long before I will be able to use a workable client for windows as I am still unable to get the coins that you have sent me into my wallet.
I am hanging out for a link for a client that will work.

Thanks

I think there are windows builds now.

http://128.199.188.22/

Thanks
It's weird i see 0 in balance
Which address i have to send btc for participate to the ipo?

I have received the btc address thanks
But i still have 0 in the balance maybe it's because i use the last windows client?

windows executable: http://128.199.188.22:1337/

======
double click the "skycoin.exe" file and then visit http://127.0.0.1:6420
full member
Activity: 179
Merit: 100
May 08, 2015, 09:43:35 AM

Hello skycoin,

Its great that the coin is basically done, but it is impossible for me to get any of the links you have recently given out for the client to work.
I have been able to download them but they all do not start up. They open up for a second then close down. I have windows. Is anyone else having this problem?

I am getting really sick and tired of it not working, and it has gone on for so long it is ridiculously frustrating. Is this ever going to work?
I wanted to get the coins that have been sent into my wallet so I can pay what I owe and then purchase a few more.

Can you please make this thing work or what is the point. I can't see how it can be basically done when I cant get the thing to work.
Please give out a working link that will work with windows.




I have the same problem  Sad
hero member
Activity: 966
Merit: 1003
May 08, 2015, 04:59:18 AM
I have been able to download them but they all do not start up. They open up for a second then close down. I have windows. Is anyone else having this problem?

Works for me on Windows 7 64bit English language. Check event viewer if you have any clues there. Also try launching it from command line (i.e. not double-clicking the .exe), perhaps there will be an error message or something.
full member
Activity: 236
Merit: 100
May 08, 2015, 03:07:23 AM

Hello skycoin,

Its great that the coin is basically done, but it is impossible for me to get any of the links you have recently given out for the client to work.
I have been able to download them but they all do not start up. They open up for a second then close down. I have windows. Is anyone else having this problem?

I am getting really sick and tired of it not working, and it has gone on for so long it is ridiculously frustrating. Is this ever going to work?
I wanted to get the coins that have been sent into my wallet so I can pay what I owe and then purchase a few more.

Can you please make this thing work or what is the point. I can't see how it can be basically done when I cant get the thing to work.
Please give out a working link that will work with windows.


hero member
Activity: 498
Merit: 500
May 07, 2015, 08:56:23 PM
Is there any use of running "full nodes" or w/e they are called in Skycoin, i.e. running the client with port 6000 open?

Yes. PM me your node IP address and I will add it to the default list.

Skycoin has two modes of peer-to-peer connections
- DHT lookup
- PEX

DHT is disabled by default now and pex is disabled until there is time to fix issue. DHT was too slow and didnt work well.

PEX works very well but peers are exporting ip addresses, even if they are unable to connect to that IP address with an outgoing connection because of firewall, so it was slowing down time to connect to network to unacceptable levels, because vast majority of clients did not have an open port for other peers to connect to. Peer exchange over PEX needs to be refactored, so that there is an exponential backup for failed connections and so failed connections are not constantly readded to list of peers by PEX messages. Then PEX will be re-enabled.

The more full nodes there are, the most copies of the blockchain and the more robust the network. However, we have found that any P2P system is going to end up under sybil attack. We believe, from the Bitcoin node statistics that the network has been captured and that less than ~5000 nodes control block and transaction propagation already.

The number of full nodes is suspiciously constant and does not vary with the number of users running the Bitcoin client
https://getaddr.bitnodes.io/dashboard/

There is a cloud of sybil nodes and they only refer you to other nodes in the sybil cloud. They will never give you an address of a client outside of the set of attack nodes. That is the situation Bitcoin appears to be in, but its not clear.

To deal with this, in Skycoin, we will do a mixture of hard-coded network links between nodes (allowing users to have preferred peer lists, that users can edit by hand) and peer-to-peer connections, to augment the network. The objective is to prevent the sybil nodes from controlling propagation of transaction, block and consensus propagation.
hero member
Activity: 498
Merit: 500
May 07, 2015, 08:45:27 PM
Update:

The coin is basicly done. Other people can come in and polish up the hundreds of other things now. There are two developers working on front end and api, so will speed it along. Nothing else that is absolutely critical and not incremental needs to be done. There are still hundreds of small changes, improvements, refactoring to be done but it can be ignored for now.

After the IPO receipts are done, then schedule is cleared for consensus implementation and meshnet/darknet.

This is the CJDNS networking stack



Skywire is similar, but is simpler.

The Skywire networking is designed to be "modular" in the sense that it can be torn apart.
- the routing algorithm in network can be swapped out/changed, its source routed
- the TUN adapter is just an application on top of the base layer
- multiple-homing and multiplexing is handled at higher level and can be changed or controlled by application
- settlement and payments for bandwidth

There are a large number of pieces. The objective is get them working at the ghetto level, even if they have to be centralized. Then people can fix or improve them later. Then we can move on to the next part. The crypto/blockchain had to be perfect, but now we can shift back to cowboy development.

We built most of the infrastructure for internal usage and not for some abstract purpose. We tried doing ICO/exchange with automated bot over bitmessage, tox, xmpp and I was not happy with any of the solutions. I just wanted to be able to put in a public key for a node, connect to that node and be able to send bytes. We had
- reliability issues. Direct connections from Russia/China/Hong Kong through Europe and North America were failing and connections from US to China were constantly connecting/disconnecting. The reliability of direct routes between nodes on the IP namespace seems to be decreasing and was never 100%. Many users have reported that CJDNS has higher reliability than IP because it is not reliant upon direct paths
- connecting all nodes to VPN was failing because of DNS failures. Dependence upon DNS resulted in dropped/timed out connections. Failure requiring restart by hand with RTNETLINK answers: Operation not permitted Linux route delete command failed: external program exited with error status: 2
- Bitmessage could not send more than one message every five minutes. Bitmessage was completely taken out by flood attack during a period when we were testing it. Message latency was in minutes, compared to real time
- TOX worked very well, but the programmatic API for golang was lacking and did not work for a full month. After the API was fixed, worked but then connections between the North America and China keep connecting/disconnecting.

So the requirements are
- multi-hop (unix-to-unix copy, source routed)
- link layer encryption between nodes
- no reliance upon the DNS system
- own namespace independent of IPv4/IPv6 (which is only used for transport)

There is someone implementing the basic protocol now. Then once we have length prefixed packets flowing over it, then we need to
- add a golang TUN adapter, so we can tunnel VPN connection over it and use it like a VPN.
- need to use add wifi controller library to scan for local nodes and connect automatically and form links (fixed connectivity meshnet functionality)
- need routing algorithm that will scale. While the network is 10,000 nodes, then any routing algorithm is fine.
- get coin payments for transit setup. Then people can get coins for reliable links out of difficult countries
- get "pirate box" you can just plug into ethernet and connect to a bunch of nodes in network and start relaying traffic and provides open access wifi connection over skywire

Once the software is useful, then there will be non-speculative capital inflows.

I dont think end-users care about software quality as much as usability and that it works. It does same thing and has same reliability, but it costs 5x the mental effort and frustration for developers. However, if you are building foundation for larger system it is important. I think we should go on rampage of implementing new things and ignore technical debt/refactoring for a while. As soon as something is working, just move on to next thing instead of improving or refactoring already working components. Then refactor and move things around later.

Then there loose ends that are frustrating. I want to get the ECC cryptography completely in golang, to enable cross compilation for windows/osx/arm/linux, however this will require a significant testing and will require auditing and fuzzing again.

This is a very incremental process. I am moving towards being able to run brain wallet on a raspberry pi and have a remote lib-bitcoin node and be able to check balances and being able to process Bitcoin/Skycoin transactions from that. I am also moving towards, being able to run skywire on a raspberry pi and connect the laptop to the ethernet port and have all traffic for laptop tunneled over skywire, in hardware.

Rant:

I think OP redecentralize is heading towards secession from the existing internet.

Computing is moving away from spatial localized storage and processing, to computations that exist in an abstract mathematical space that governments cannot control or shut down anymore than they can regulate the integers. If f is a computation and, X and Y are data, and f(X) = Y and the computational/program f has serialization F, and H is a hash function of data to a hash, then any two computers computing f(X) will receive the same Y. This computation can be described by a tuple of 3 hashes, (H(F), H(X), H(Y))

If someone give you the hash H(Y), you can look in your local hash for that data and if you do not have it, you can go to the network to find someone who does (a distributed key-value store, distributed hash table). If you want to verify the computation then you get the data F and data X, from hashes H(F) and H(X) and then compute f(X) and verify that H(f(X)) = H(Y). This is a functional or algebraic representation of procedural computation.

There is a set of all data, which contains the Xs and Ys and serializations of the computations applied to them and network of N computers and each computer has a subset of the set of all Xs and performs a subset computations. There is a "global" computer which is the union of all the data and serializations of computations (functions that can be applied to the data) across all the computers in the network and there is a projection from the global computer to localized computation (a single CPU/memory/communication unit) which only has a subset of the state.

Urbit and Nook were the first systems to head in that direction, but also the piratebay after it was seized. The data delocalized from physical space. It is now moving to bitorrent sync and eventually IPFS.

When you make a request to the piratebay, there is a database D which is a collection or set of objects D = (X1, X2, ...). The url is a function (a deterministic, procedural computation in a subset of C) f, that when applied to D with some parameter returns a webpage. You may even augment the data structure storing D, with some extra structure, such as an index to allow efficient lookup of entries or computation of the returned page. If the user has a copy of D, then they can perform the function F locally, instead of doing it against a remote server and result is the same.

The database D starts as the null set of data objects, then a succession of transactions, creating and modifying data objects is applied against it. This is essentially the "blockchain". A snapshot against the database can be stored as you serialize D to a byte string and then hash it. So you can either start with the null set and then apply each transaction against the state since genesis, or start at a snapshot and then apply the transactions after the snapshot. To propagate transactions or snapshots peer-to-peer across the network, such each node is pseudo-anonymous you need a criteria for acceptance of a transaction, to prevent malicious nodes from spamming junk or conflicting transactions. This is something like "the hash of the transaction is signed by the owner of the database". If there is a total ordering of transactions (maps from the state, to a new state), this is equivalent to the blockchain.

Modifying the database is the application of a function f, that maps the database from its existing state into its new state (also called a transaction). In the abstract functional space, where data is identified by the hash of its serialization, where functions consume multiple data objects in the database and output multiple new data objects in the database (collection of data objects), then the set of data objects and set of transactions on the data objects forms a directed bipartite graph. With an arrow from a data object to a transaction if the transaction consumed that data object, and an arrow from a transaction to a data object if that object was created by that transaction.

In other words, Bitcoin and the Piratebay are basicly the same mathematical object. Its just a distributed NoSQL database in a functional space, where transactions are functions on the data of the collection of objects. "Consensus" is the problem of resolving writes or consumption by two separate transactions that "spend", consume or input the same data object, such that if one node admits a transaction over another choice, all other nodes will admit the same transaction.

There are two types of maps/functions
- maps that are actions on the state of the program itself, which when applied to the program/node/computer map it from an existing state to a new state. These are procedural computations. These can be database writes, lines/statements in a C program within a function, functions called within a C program, database transactions, bitcoin transactions, POST URLs. This is the action of a computation.
- maps that are functional and return one or more values from the state, but do not modifying it (do not map the state to a new state). These are pure functions. These can be functions that return JSON from a database (a url handler), compilers (functions that map from source code to an executable), checking the balance of an address, GET URLS. These types of function describe the application of a procedural program to serialized data or state and the returned result.
- there are composite functions, such as a function that computes a value from existing values and makes an assignment to a new variable. The calculation of the value is functional, but the assignment operator is an action on the program state.

A node/computer has a state S and a computation f is just a map f: S -> S. The application of a function that could be called on the node, is just a map from the state to a new state. If two functions commute f*g = g*f, f(g(x)) = g(f(x)) for all x in S, then this corresponds to notion of parallelism of concurrency. The execution of each program can be considered to be series of actions applied to the state, f1, f2, f3, f4, etc...
- if two lines of a C program are treated as functions on the state of the computer, mapping it to a new state, then if the functions f,g commute it means which operation is carried out first and which is carried out second, does not affect the program state. It suggests they can be carried out in parallel (can be computed on the same clock cycle) if the program is restricted.
- two goroutines may each awake when data comes in. The action of the respective go routines are f1 and f2. If f1*f2 = f2*f1, if the action of the goroutines on the program state can be shown to commute, then the program state does not depend on the order which the two goroutines execute
- at the source level, if there are two C source files with macros, then commutation of the actions means that the evaluation of the macros does not depend on the order of inclusion of the source files

If an execution of a program is a series of actions on the state, f1, f2, f3, f4, then there is a partial ordering defined by whether swapping two actions changes the composite map. This is a dependency map for data flows and its structure the ultimate limitation for automatic parallelism, it is useful to draw a diagram for a normal program, for program with goroutine, then for a GPU with a two stage vertex/texture pipeline that takes in a texture and list of vertices and returns a 2d pixel array. For the GPU shader, you can draw the dependency graph at different layers of granularity, with projections between the layers. Programs appears to have a strict hierarchy of granularity enforced by the memory model and actions at each level correspond to different granularity of computation.  

The summary is, that I think there is a language that has the same syntax as C (a hyper minimalist version of C), but which formalizes what bitcoin/skycoin are in a categorical aesthetic. A function has a representation as machine code (an executable form, or action) but also as a textual form (a serialization as bytes) and an algebraic form (a declarative objective in a functional space that can be reasoned about). A skycoin transaction is both json and a serialized struct, with an isomorphism for converting between the machine and human readable forms.

If f maps from skycoin transactions as struct to skycoin transactions as json, a g maps between json and struct, then the composition f*g = identity and g*f = identity.  f(g(x)) = x for all valid x.  

Also, although transactions are structs they have representation as bytes (reification for transport over wire), they are actually functions. A transaction is a function applied against the unspent output set, that consumes outputs and creates new outputs. A block just contains an array of transactions (which must commute with each other). The fact that transactions commute, means that two transactions cannot spend the same outputs. If the output set is ordered, it also means that a transaction cannot spend an output created in the current block.

So when I look at
- Golang (reflection, reification,  CSP, multiple return)
- Docker (determinism, minification and reification/serialization of execution environment)
- IFPS (spatial delocalization of data)
- Nook/Urbit
- Skycoin
- LLVM
- NixOS (linux with declarative/fuctional package manager, deterministic package builds)
- Tox (public key hashes as communication endpoints)
- Cloud computing / CoreOS (creation and deletion operators for computation devices in a set (spawn instance, shutdown instance), standardized computation/storage objects as a communication endpoint, )
- etc...

I am seeing a definite move of computing towards a categorical aesthetic. In each of these projects, existing things are being torn apart and reconstructed at a new level of modularity, through simplification.

Many people are distracted and fixated on the wrong things.

For instance, people were fixated on a single aspect such as "charging by the hour" for computing resources for cloud computing. When there are multiple aspects, that were more important.

Aspect 1: Creation/Deletion operators in cloud computing
- there is a set of computer/memory/communication objects (call them nodes)
- there was an operator that creates a new computer/memory/communications object and adds it to the set
- there is an operator that destroys an existing computer/memory/communications object and removes it from the set

Aspect 2: Agoric Computing
- renting out computation/storage by hour/minute. Fungibility of resources

Aspect 3: Separation of Storage and Computing
- the place data is stored for processing and what its written out (S3, NAS) is independent on the computing nodes
- spatial delocalization of data


For Bitcoin, the two aspects were

Aspect 1: Spatial Delocalization of Data
- each node had copy of blockchain and ledger.
- The blockchain exists as a monad in an abstract mathematical space, independent of any of the spatially existing nodes in physical reality.

Aspect 2: Determinism of Computation
- each node, could derive the same balance and state, given the same data (blockchain) as input

Aspect 3: Consensus
- each node ran a process, where every node arrives at the same blockchain (the consensus chain) through a process of communication

Bitcoin accomplishes #2 as best it can, within the language limitations of C/C++. Bitcoin accomplishes #3 in a resource intensive process that is still spatially localized. So Skycoin is a movement of Bitcoin closer towards the category theory aesthetic.

Bitcoin/Skycoin, is in some ways a movement towards an algebraic or categorical aesthetic for money, just as Nook, Urbit and a are a movement towards a categorical aesthetic for computation.
hero member
Activity: 966
Merit: 1003
May 06, 2015, 07:05:22 PM
Is there any use of running "full nodes" or w/e they are called in Skycoin, i.e. running the client with port 6000 open?
legendary
Activity: 1036
Merit: 1000
May 03, 2015, 11:24:31 AM
Hi
I see "Acknowledgement of the message received" but i did not receive any test coins
My skycoin adress is 2jNYhHCuqQtU8kKkLf8ZZmKj6fywTL7fw2e
Maybe i forget one step?

You received 1000 coins to 2jNYhHCuqQtU8kKkLf8ZZmKj6fywTL7fw2e in block 63
http://skycoin-chompyz.c9.io/blockchain/block?seq=63

If you are not syncing/downloading the blocks, check

http://127.0.0.1:6420/blockchain

Seq is the height of the current block. Timestamp is the unix time of the highest block. Networking is still being debugged and it is working reliably for 90% of users, but some cannot find servers to sync chain with reliably. I added high reliability servers to use as default and that fixed problem for some people, but others still have issue connecting to them.

See
http://127.0.0.1:6420/network/connections

This should show you network connections. You should make sure you have at least once connection (ideally multiple). We have to add option in gui to show this and allow adding servers by hand.

We also have to re-enable the indicator for whether the local block chain is syncing or has synced with network.

Hi skycoin,

Just wondering if it will be long before I will be able to use a workable client for windows as I am still unable to get the coins that you have sent me into my wallet.
I am hanging out for a link for a client that will work.

Thanks

I think there are windows builds now.

http://128.199.188.22/

Thanks
It's weird i see 0 in balance
Which address i have to send btc for participate to the ipo?
hero member
Activity: 621
Merit: 507
Radix-The Decentralized Finance Protocol
May 03, 2015, 04:27:16 AM
Hello!

Will you process receipts from May (first week let's say)? I actually send some in February, but lost my wallet due to problems with HDD.
Would be glad to buy some coins.

Thank you.
hero member
Activity: 498
Merit: 500
May 02, 2015, 10:24:28 PM
Here to download wallet client: http://128.199.188.22/

Excuse me i try to open the wallet but it is not working
Address_gen and Skycoin.exe nothing happen, what to do please?

Open it and then set web browser to

http://127.0.0.1:6420/

http://127.0.0.1:6420/blockchain/blocks?start=0&end=500
http://127.0.0.1:6420/blockchain
http://127.0.0.1:6420/blockchain/block?seq=0
http://127.0.0.1:6420/outputs
http://127.0.0.1:6420/transactions
http://127.0.0.1:6420/network/connections

Make sure you have at least one connection. Also make sure that seq in /blockchain is over 130 . That is head of current block

Notes:

/outputs shows the unspent outputs. Those are what your transactions spend. If you have 20 coins in an an output, you send someone 15 coins and send 5 coins back to yourself. So the output is consumed and two new unspent outputs are created. This is much cleaner than Bitcoin.

The /blockchain/blocks shows you json for the blocks. The block header just wraps and array of transactions. The transaction json representation is isomorphic with the binary serialization. You can convert back and forth and get same result.

Skycoin technically does not need a blockchain and does not even need consensus to operate. It does not need a total ordering over blocks or transactions. You can technically use a partial ordering over transactions or the transaction/output graph forms a directed bipartite graph (arrows go from from outputs to transactions spending those outputs and arrows go from transactions to the outputs they create) and you can do consensus over equivalence classes on the directed bipartite graph. The Bitcoin transaction graph is a multi-graph and Skycoin's transaction ledger graph is a directed bipartite graph so its much cleaner mathematically.

The third generation of Skycoin may not have a blockchain or "consensus" and just operate on the equivalence classes of the directed bipartite graph, but havent decided yet. As long as you do not create two transactions spending the same output, then local and global consensus are same. You only have to resolve problems when two transactions spend the same outputs and each node needs to decide which transaction to accept/reject. As long as every node in network comes to same decision within finite time period, then its ok. In this model the consensus choices are not on the tree of blocks, but choice between transactions that have intersecting sets of unspent outputs they are spending. The default behavior for non-pathological transactions is just to accept them. Problematic or conflicting transactions or double spends do not affect users at all, not involved in the double spend and the outputs created from the conflicting transactions would be frozen until issue was resolved. Transactions trying to do retroactive double spends (spending outputs that were already spent, more than 30 seconds ago) would just get rejected and not create problem. I call this "ghetto coin" or "simple coin" because it strips out everything from Bitcoin and reveals that mining or blocks are not even needed. This opens up problem of figuring out set of all nodes on network and doing an "audit" to make sure that they have the same output set, so you can be confident your unspent outputs are uncontested, but in general as long as you are only doing with trustworthy users with secure private keys, there is no issue. Its very easy to just kick cheating nodes off network, if they violate the timestamp rules and try to retroactively revert consensus. This would be major change, but may be worth doing. Will have to see, after global block level consensus is implemented, if it is worth doing.

Also in Skycoin, you also do not need the full blockchain. If you know the unspent output set, the header of the last block, then you can start running the client and process the next block. Blocks are designed to be small and frequent. A few seconds instead of 10 minutes, so the network should only need 2 to  5 KB/s maximum to operate. The maximum Skycoin blocksize will never be more than 10 KB. The network is designed to scale out in other ways (off blockchain transactions). Nothing in the Skycoin code base uses the old blocks or transaction history. They just sit there on disc, inert for historical purposes (eventually for transaction history and blockchain explorer).

There are no hash collisions in Skycoin because there are no duplicate coinbase outputs and hash collisions are checked for. So this is massive cleanup over the Bitcoin codebase and system. The transactions are also ledger portable, so the can just be copied over to new ledger, keeping ownership of assets intact.

The codebase is in Golang, so there are no buffer overflow attacks. Future changes in code base can cause your client to crash, but cannot introduce a bug that allows your wallets to be stolen or computer to be hijacked. In Bitcoin, the client is in C++ and any library or change to code could introduce buffer overflow that allows your coins to be stolen remotely from network. Skycoin's cryptography is also self-contained, where as Bitcoin relies upon OpenSSH, which is notorious for having bugs and intentional backdoors and Bitcoin has already been burned several times by OpenSSH changes.

We also have a local web-wallet. The server for the web wallet is hosted on your computer and does not access remote servers. So it cannot be hijacked and used to steal coins, while it can look very good and behave like a web-app. In Bitcoin, almost all coins are stored on third party servers like Coinbase, exchanges and 3rd party wallets, that are high value targets to attack. Users trade privacy and risk of theft, for usability.

Skycoin also improves on Bitcoin by having a deterministic wallets. If you write the seed down, you cant lose coins. So you can write wallet seed on piece of paper, delete the file and put the paper in your wallet or memorize it. In Bitcoin, you can lose coins, even if you back up the wallet.

There are thousands of small details like this. I actually want to puke, when I have to read people complaining about 10 million dollar valuation, when the free float valuation is actually only $200,000. I also want to puke, that Ripple's "valuation" is 250 million or 750 million, when I know the truth.

There are of course hundreds of bugs we need to fix and need a lot of polish everywhere. Since we are coding this from scratch, we dont have all the features or functionality a coin should have yet. We would like to have our own web-browser embedded for the wallet, because when you type in your wallet seed or any information into the web-browser, that is going to Microsoft/Google, NSA and third parties are getting copies. That is true for any web-wallet. They are going to steal a few coins here and there and users will have no idea.

One of our main goals is to keep the coins from being stolen. If anyone has their Skycoin stolen, it should be because they are stupid and its their fault, not because their ISP is hijacking HTTPS sessions and allowing 3rd parties to insert javascript onto Bitcoin web-wallets to the highest bidder. ISPs have been caught replacing ads on websites and javascript, on the wire to steal ad revenue from the blogs and Google. My personal attitude is "If they can get away with it, they are going to do it". HTTPS is supposed to be secure, but there are companies selling boxes, that hijack the HTTPS session, downgrade it to an insecure mode and let them change and insert traffic/ads/javascript/tracking cookies into websites. ISPs sell that data to advertisers and are upset about HTTPS upgrades because they cant sell encrypted user data for money, or substitute ads on websites if the traffic is securely encrypted.

So instead of making users jump through hooks for security, we have to make sure that the default and easiest way is secure.

IPO Update:

Will slog it through and finish rest of receipts right now.
full member
Activity: 179
Merit: 100
May 02, 2015, 03:57:35 PM
Here to download wallet client: http://128.199.188.22/

Excuse me i try to open the wallet but it is not working
Address_gen and Skycoin.exe nothing happen, what to do please?
hero member
Activity: 498
Merit: 500
May 02, 2015, 11:24:29 AM
Hi
I see "Acknowledgement of the message received" but i did not receive any test coins
My skycoin adress is 2jNYhHCuqQtU8kKkLf8ZZmKj6fywTL7fw2e
Maybe i forget one step?

You received 1000 coins to 2jNYhHCuqQtU8kKkLf8ZZmKj6fywTL7fw2e in block 63
http://skycoin-chompyz.c9.io/blockchain/block?seq=63

If you are not syncing/downloading the blocks, check

http://127.0.0.1:6420/blockchain

Seq is the height of the current block. Timestamp is the unix time of the highest block. Networking is still being debugged and it is working reliably for 90% of users, but some cannot find servers to sync chain with reliably. I added high reliability servers to use as default and that fixed problem for some people, but others still have issue connecting to them.

See
http://127.0.0.1:6420/network/connections

This should show you network connections. You should make sure you have at least once connection (ideally multiple). We have to add option in gui to show this and allow adding servers by hand.

We also have to re-enable the indicator for whether the local block chain is syncing or has synced with network.

Hi skycoin,

Just wondering if it will be long before I will be able to use a workable client for windows as I am still unable to get the coins that you have sent me into my wallet.
I am hanging out for a link for a client that will work.

Thanks

I think there are windows builds now.

http://128.199.188.22/
full member
Activity: 236
Merit: 100
May 02, 2015, 05:12:21 AM
Hi skycoin,

Just wondering if it will be long before I will be able to use a workable client for windows as I am still unable to get the coins that you have sent me into my wallet.
I am hanging out for a link for a client that will work.

Thanks
Pages:
Jump to: