HN user

trentmc

238 karma

Founder @OceanProtocol. AI, blockchain, data, Token Engineering. http://trent.st

Posts17
Comments63
View on HN
blog.bigchaindb.com 9y ago

Blockchain Infrastructure Landscape: A First Principles Framing

trentmc
2pts0
blog.bigchaindb.com 9y ago

AI DAOs, and Three Paths to Get There

trentmc
3pts0
blog.bigchaindb.com 9y ago

Blockchains for Artificial Intelligence

trentmc
121pts60
blog.bigchaindb.com 9y ago

Blockchains for Big Data, from Data Audit Trails to a Universal Data Exchange

trentmc
2pts0
medium.com 9y ago

A Decentralized Content Registry for the Decentralized Web: CoalaIP and IPDB +IPFS

trentmc
4pts0
updates.settlemint.io 9y ago

SettleMint: blockchain to vote for Trump or Hillary

trentmc
1pts0
blog.bigchaindb.com 9y ago

Introducing Simple Contracts: Business Logic W/O Smart Contract Security Risks

trentmc
1pts0
github.com 10y ago

Reverse 3d search open-source library with log(n) scaling

trentmc
2pts0
github.com 10y ago

Image-Match: Open-source scalable reverse image search

trentmc
86pts10
www.bigchaindb.com 10y ago

BigchainDB: A scalable blockchain database

trentmc
47pts9
www.whereonthe.net 10y ago

Show HN: WhereOnTheNet – Trace how images spread on the Internet over time

trentmc
10pts2
medium.com 10y ago

Who owns your thoughts? Forget 1984, License agrmnts are the real thought police

trentmc
10pts0
www.n3uro.com 10y ago

N3uro: A marketplace for brainwaves of people thinking about things

trentmc
23pts4
blog.ascribe.io 11y ago

Creative Commons and Ascribe Enable Copyleft on the Bitcoin Blockchain

trentmc
1pts0
blog.ascribe.io 11y ago

In Getting Work by Ella Frost, We Ate Our Own Dog Food

trentmc
85pts29
ascri.be 11y ago

152-year old art museum just added blockchain-ascribed digital art to collection

trentmc
1pts0
cointemporary.com 11y ago

Collect digital art, with Bitcoin, authenticated on blockchain

trentmc
1pts0

As you'll see in my other comments (and articles on it), "blockchain" is better described as a field with a set of related goals for technology artifacts, rather than a specific data structure [1]. I frame it as: it has blockchain characteristics if it's decentralized, immutable, and assets [2].

This is a much healthier framing, because it doesn't constrain the goals to a particular approach (e.g. a particular data structure).

[1] https://blog.bigchaindb.com/blockchain-as-a-field-47c9f45894...

[2] https://blog.bigchaindb.com/three-blockchain-benefits-ae3a2a...

"Truth" of course is a red herring. "Claim" is better. And, "digitally signed claim" is better yet.

Then to answer your Q: a good sharding approach should let you see all digitally signed claims (including when those claims were made) with probability --> 1.0. I'm framing this probabilistically because many sharding approaches rely on that definition. (And even non-sharded blockchains like Bitcoin itself.)

Many people disagree about what blockchain technology is. To me, it' about the characteristics, rather than how they're implemented. I see three characteristics: decentralized, immutable, assets [1].

Under this framing, the "linked list of hashes" is one partial way to achieve immutability. And "every node has this list" is one partial way to get to decentralization is achieved. But that's only part of it. Eg you need to address: what if a node acts badly? And you want a means to create & issue assets.

every node has a copy AND the list is append only leads me to something that doesn't scale well.

Correct. That's why there is work to scale better, e.g. via sharding by BigchainDB and by others.

[1] https://blog.bigchaindb.com/three-blockchain-benefits-ae3a2a...

To me, "blockchain-like" is about getting the benefits of decentralized, immutability (tamper-resistance), and assets.

How one goes about getting those characteristics is wide open. Most blockchain systems do have a full copy of the database at each server node, i.e. fully replicated. Also, they are "peer to peer" which means there is no distinction between clients and servers. (They do have SPV wallets though which is kinda similar.)

BigchainDB's focus has always been about scale. We're partly there but not fully: we are currently fully replicated but are targeting sharding to address that [1]. Where we do get scale already is properly distinguishing between between clients and servers. Servers are "super peers", decentralized among themselves. They do the heavy lifting, i.e storage. Apps don't need to run a server node; instead they simply are clients to the network, and of course can query >1 node.

[1] https://blog.bigchaindb.com/bigchaindb-developer-update-2d32...

How does this solution respond to someone spinning up a thousand nodes, and simply voting for their double spend attack? This is the classic "Sybil attack". But I bet you knew that:)

If you have a member list (ie list of public keys) of who can be server nodes, then you can control this. Each member (public key) only gets one vote. So even if that person makes 1000 copies, it's only 1 vote total from that member.

governing organization behind the network controls the member list, so Sybil attacks are not an issue.", which is directly contradictory to your statement that it is decentralized. A decentralized network has no "governing organization".

Great question. However the control of this organization is decentralized too. Here's how. IPDB is the BigchainDB public net, and foundation to help govern. Net: each server node is run by a "caretaker". Foundation: each caretaker has one vote. They vote to control the member list (list of caretakers), as well as IPDB board. So, it's decentralized: no single entity is controlling it.

There are other ways to curate "member lists" to address Sybil attacks. E.g. Bitcoin's PoW is basically "one electron one vote" on average (assuming everyone has a modern ASIC). In search of block rewards, many players work hard to maximize their electron spend (ie big ASIC farms), which of course eats a lot of power. Or BitShares' PoS is a riff on "one token one vote". There are more. We simplified the problem for IPDB: start with a great initial member list of reputable orgs that deeply care about the future of the internet (Internet Archive, Open Media Foundation, COALA, etc); and give them control from there. Some heavy lifting up-front to set this up allows great gains in efficiency.

Re (2): this would be a group of people or organizations running nodes together. (If it was just nodes you controlled it misses the point of being decentralized.) You could store sensitive data in this setup, if each person/org had the proper data protection setup. This is not easy, however.

Also, are suggesting that no sensitive data should ever be stored in a BigChainDB, or I misinterpret #3?

Actually option (2) shows a way to store PII on BigchainDB. But it's not easy. My recommendation is to do (1). And, like my comment before, please please don't do (3) ;)

I'm not defining "decentralized" as simply "distributed between multiple corporations, where multiple people have read/write access".

To be "decentralized", it's key that there are >1 sysadmins (ie runners of server nodes); and bad behavior from some sysadmins does not take the whole system down.

We experimented with a bit with decentralizing Cassandra. From what we saw, it is possible to decentralized it in the way I define it. We also tested other DBs. We chose RethinkDB because we liked their approach to global oplog; and we preferred a document-store interface over a column store interface. Later we added MongoDB support because of customer interest and some technical benefits. (For the record we added this support before Rethink's woes. Glad to see it found a foundation:)

Hi, it's Trent here, CTO of BigchainDB.

That's a great question. It's surprising how few people are aware of the current German data protection laws (where we're based) and the upcoming EU data protection laws aka GDPR.

There are a few ways to address the issue:

1. Don't store any PII on the database, rather only use it to link to data that's stored on-premise in many places. The database has permissioning, and therefore acts as (decentralized) access control logic. Have a TOS with proper legal teeth so that if a database user does store PII on the database, they are liable in the real world.

2. Run an instance of BigchainDB within a region, e.g. within Germany, and comply with the appropriate laws there. Let PII be on the database. But, each node must follow data protection guidelines, similar to how a single centralized entity would, but now do it for each node.

3. Force encryption of all PII, and pray.

(3) is really a non-option. I stated it because many people are saying "just encrypt". But the problem is quantum computing. In 5-15 years quantum computing will be sufficiently easy to access that any encrypted data that's publicly available can be decrypted. You might say "well let's migrate to quantum-tolerant crypto before then" but that doesn't stop a malicious actor from copying encrypted PII now. You might say "let's use quantum tolerant crypto now" but we've seen with most crypto algorithms that it takes years to harden them. Would you trust your PII with untested crypto algorithms? I wouldn't. In short: putting encrypted PII on public nets is a bad idea. Please, please don't do it.

Hi, it's Trent here, the CTO of blockchain.

I know. I think if I read "scalable" and "blockchain" in the same sentence again I'll scream. I acknowledge the hype out there.

FYI we were working on blockchain in 2013; long before the hype. We started encountering massive scale problems in 2014 and working on it in 2015, long before the "scale + blockchain" hype. We started work on this. So we're not doing this because it's some fancy combo of buzzwords, we're doing it because we identified a problem years ago, and have been making steady progress to improve it ever since. It was a surprise to me to see BigchainDB to hit HN front page today, since we've been shipping it since Feb 2016!

Once bitcoin can handle Visa's transaction volume (250M transactions/day) we can talk scale. We're not trying to improve Bitcoin. We're building our own thing. As we continue to improve the technology, it becomes useful to ever-wider classes of users.

Re CockroachDB: it's a cool technology. The big difference is that it's distributed but not decentralized. That is, the compute resources (in this case mainly storage) are spread across many machines; but the control is in the hands of a single entity / sysadmin. Whereas decentralized means the the control is spread across many sysadmins; and even a few rogue sysadmins won't take down the system.

I totally acknowledge that there are pros and cons for both dynamically and statically typed languages. (We could start a 10 page discussion here. But I've been there before, perhaps you have too, how about we save our energy? ;)

(Hi, it's Trent here, CTO of BigchainDB.)

We can do a lot better than the scale of Bitcoin. And we are. Scale is part of the point. And you don't need to centralize to get scale. We did improve upon the Model T, didn't we? Or, I remember programming with 16K memory on my computer. Technology improves. And it is here too. That's what we do at BigchainDB.

Hi, Trent here, CTO of BigchainDB.

Correct, traditional blockchains like Bitcoin aren't scalable.

The whole point of BigchainDB is to bring scale to (the database part) of the blockchain space, using the learnings from distributed databases which do scale.

More info at www.bigchaindb.com, I encourage you to have a read:)

Hi, traditional "blockchains" have full replication which of course doesn't scale as you mention. Replication factor of 5000 is overkill (basically what Bitcoin has). Full replication isn't a prerequisite to building something useful. Instead, replicate less, use the extra nodes to store other shards of data, and make sure you have the right guarantees. That's the path.

Hi, it's Trent here, CTO at BigchainDB.

Summary: Python isn't the bottleneck yet, and if it becomes one, C will become the last 1%.

I've been working on production apps in Python since 2002, including ones doing large-scale compute running 1000+ machines at once. How: 99% python, 1% C. But the trick is, you only build in the C once you've worked out all the kinks and optimized the big-picture stuff elsewhere. Python is great for not only connecting things, but rapidly iterating on algorithms and building maintainable code.

The AI / ML community has discovered this too: Python is now the most popular language in that community. Despite the heavy compute. How: most of the popular libraries have efficient C (etc) implementations under the hood.

This is exactly the philosophy we've been following at BigchainDB, with success. Python to connect things, iterate quickly in improving algorithms, and ship maintainable code. We haven't got far enough to resort to building our own C libraries yet, though many 3rd party libraries we use are implemented in C.

[EDIT] Based on the comments below, I'll now mention here too: BigchainDB wraps MongoDB, which is written in C++. And, Python 3.5+ (which BDB uses) has gradual typing, which brings many benefits of static typing to Python.

Perhaps you're looking for an append-only logging / messaging system like Apache Kafka? Good to explore what's out there and understand what's possible.

BTW using BigchainDB can feel pretty lightweight: it feels like a DBaaS but you don't have to set up the back end, you just get going. In the following, you'll have a tx on the BigchainDB public net (IPDB) in seconds. And the JS or py code to do it yourself is right there too. https://www.bigchaindb.com/getstarted/

I'm sure you know this but I will clarify for readers: PoW is only one consensus algorithm. Consensus algorithms go back decades. They're powering all the distributed DBs, file systems, etc that power the web. Some are fault tolerant (eg Paxos), some add in Byzantine tolerance (eg PBFT), some add in Sybil tolerance (eg PoW).

Not sure whether BigchainDB implements consensus/PoW

It has a 2-layer consensus algorithm. (See a comment above, or BigchainDB docs.) It does not use PoW because PoW is inefficient; BigchainDB doesn't target applications needing Sybil tolerance.

Hi, it's Trent here, CTO of BigchainDB.

FYI we started working on the precursor to this in 2013 (ascribe). Bitcoin hadn't even hit the mainstream then, let alone blockchain. We didn't build it to mash together buzzwords. We built it because we saw a clear need for it. We had been building on Bitcoin, and (a) didn't scale to meet our needs and (b) was super-hard to use because it didn't act like a database. So we built BigchainDB to address issues (a) and (b).

Obviously, good old "boring" MySQL is incredibly useful for tons of problems. If you're already solving a problem with MySQL, then BigchainDB is not a fit. Don't use it, stick with the thing that's working.

Where it is useful is applications that want at least one of the following benefits:

1. decentralized, so that >1 orgs can share resources

2. immutable / tamper resistance, for provenance of ownership of art, spare parts, food, etc

3. assets, so you can exchange digital goods more readily.

More details here: https://blog.bigchaindb.com/three-blockchain-benefits-ae3a2a...