Bitcoin Forum
May 08, 2024, 03:49:07 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Decentralized programming language  (Read 1674 times)
Realpra (OP)
Hero Member
*****
Offline Offline

Activity: 815
Merit: 1000


View Profile
April 09, 2012, 10:37:35 PM
 #1

Bitcoin is decentralized which provides it both safety, security and performance.

However Bitcoin is pretty simple. My question is: Could a programming language be created that is completely decentralized?

Necessary characteristics:
1. Each node must be unable to access at least some critical data.
2. Each nodes individual instruction execution must be verified to be correct as defined by the language.
3. Protocol enforcement must either be maintained cryptographically or via strong incentives - such as "program-runtime-points" for instance.

We know bitcoin is possible. Multi-sig txs are also at least theoretically possible, though I don't know much about it.

To what degree can we take it? My vision is like torrents but with programs.

I'm thinking data protection might be achieved by never executing subsequent instructions on the same node - context information is thus lost.
Maybe all types should be split up too so that one node never has a full variable... basically each node would emulate a small part of a micro processor getting some, but not all bits and would have no idea of what was going on.

Performance is a bitch though.

Bedtime for me I think...

Cheap and sexy Bitcoin card/hardware wallet, buy here:
http://BlochsTech.com
1715183347
Hero Member
*
Offline Offline

Posts: 1715183347

View Profile Personal Message (Offline)

Ignore
1715183347
Reply with quote  #2

1715183347
Report to moderator
1715183347
Hero Member
*
Offline Offline

Posts: 1715183347

View Profile Personal Message (Offline)

Ignore
1715183347
Reply with quote  #2

1715183347
Report to moderator
1715183347
Hero Member
*
Offline Offline

Posts: 1715183347

View Profile Personal Message (Offline)

Ignore
1715183347
Reply with quote  #2

1715183347
Report to moderator
BitcoinCleanup.com: Learn why Bitcoin isn't bad for the environment
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1715183347
Hero Member
*
Offline Offline

Posts: 1715183347

View Profile Personal Message (Offline)

Ignore
1715183347
Reply with quote  #2

1715183347
Report to moderator
1715183347
Hero Member
*
Offline Offline

Posts: 1715183347

View Profile Personal Message (Offline)

Ignore
1715183347
Reply with quote  #2

1715183347
Report to moderator
1715183347
Hero Member
*
Offline Offline

Posts: 1715183347

View Profile Personal Message (Offline)

Ignore
1715183347
Reply with quote  #2

1715183347
Report to moderator
Nefario
Hero Member
*****
Offline Offline

Activity: 602
Merit: 512


GLBSE Support support@glbse.com


View Profile WWW
April 09, 2012, 10:42:03 PM
 #2

E-programming language

Also read up on distributed computing.

PGP key id at pgp.mit.edu 0xA68F4B7C

To get help and support for GLBSE please email support@glbse.com
Realpra (OP)
Hero Member
*****
Offline Offline

Activity: 815
Merit: 1000


View Profile
April 09, 2012, 10:58:53 PM
 #3

Not just fault tolerant, but decentralized as bitcoin. ie. lets call this language Torrent sharp or T# - if I publish a program in this language, as long as someone uses it with their T# client it must keep running.

It must be independent from me and no node should be able to see the data or variables inside the program.

E just looks distributed to me which alone is simple.


With this envisioned language I could program a bitcoin currency with a program-centralized DB, no public key cryptography and no work proofs and it would be every bit as safe as the bitcoin we have now.


I am thinking that a client adds points to a given program, but does not itself necessarily get that programs bits.

Instead hosting and storage distribution is randomized with programs "buying" hosting time automatically for their points.


Program used files/variables (say a JPEG or w/e) would have to be hidden, broken up or ciphered from the hosting node somehow.

Cheap and sexy Bitcoin card/hardware wallet, buy here:
http://BlochsTech.com
Maged
Legendary
*
Offline Offline

Activity: 1204
Merit: 1015


View Profile
April 10, 2012, 03:17:06 AM
 #4

I'm thinking data protection might be achieved by never executing subsequent instructions on the same node - context information is thus lost.
The big question is, how do you achieve this? What is considered the "same node"? Even nodes in completely different physical locations could collaborate to capture data. If you can solve this problem, the rest is easy.

twobitcoins
Full Member
***
Offline Offline

Activity: 144
Merit: 100


View Profile
April 10, 2012, 05:59:44 AM
 #5

One approach is to perform computations on encrypted data without knowing how to decrypt the data, which is called homomorphic encryption.

This is apparently a practical implementation: An MIT Magic Trick: Computing On Encrypted Databases Without Ever Decrypting Them
Realpra (OP)
Hero Member
*****
Offline Offline

Activity: 815
Merit: 1000


View Profile
April 10, 2012, 08:34:47 AM
 #6

The big question is, how do you achieve this? What is considered the "same node"? Even nodes in completely different physical locations could collaborate to capture data. If you can solve this problem, the rest is easy.

Well perhaps the "next node" could be part of the protocol so that the nodes themselves could not freely choose who to send to.


I will read up on twobitcoins proposal later.

Cheap and sexy Bitcoin card/hardware wallet, buy here:
http://BlochsTech.com
blablahblah
Hero Member
*****
Offline Offline

Activity: 775
Merit: 1000


View Profile
April 10, 2012, 11:07:45 AM
 #7

In place of the blockchain, what would be "in the cloud" so to speak?

I'm guessing you mean various libraries, so that a local client, "IDE + compiler" can access those libraries in a torrent-like fashion. I imagine compilation would be very slow due to networking bottlenecks, and people would quickly run into problems with bloated libraries, multiple variations of the same classes and so on. When it came to editing libraries, some kind of robust version control with conflict resolution would have to be built-in... It all seems like a lot of work, when people can just freely download libraries anyway.
Forp
Full Member
***
Offline Offline

Activity: 195
Merit: 100


View Profile
April 10, 2012, 04:09:21 PM
 #8

One approach is to perform computations on encrypted data without knowing how to decrypt the data,

And there are quite a number of interesting implementations of this idea.

One of the concepts is SecreC (secret C). There is more on this here: http://sharemind.cyber.ee/research

Another group is in Denmark: http://viff.dk/ or the Sepia guys in Zurich http://www.sepia.ee.ethz.ch/

Actually, this is a fascinating research area  Cheesy
Mike Hearn
Legendary
*
expert
Offline Offline

Activity: 1526
Merit: 1129


View Profile
April 11, 2012, 06:17:04 PM
 #9

You should also look at multi-party computation. It allows for multiple co-operating nodes to run a program together, without each node being able to see all the inputs to it. The problem is it's very complex / expensive / slow.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!