[edit] By "full node" I meant "archival node."
[edit] By "full node" I meant "archival node."
Yes, you can run your own Etherium node and server, and connect a MetaMask wallet to it.[1] As Moxie points out, nobody wants to do that.
Worse, the blockchain does not, apparently, contain the hash of the data. You can't even prove you even have access rights to the data if the hosting service goes down. All you own is a link to a URL.
There are more Ethereum full nodes than two, but how many will accept web queries? That's a service.
[1] https://media.consensys.net/how-to-install-and-synchronize-y...
It very often does, and it is certainly the case for most high-value NFTs. It is indeed not the case if you create your NFT on OpenSea and do not take the additional step of freezing the metadata.
Also, there are many artworks that change, so a hash to a single file is not necessarily the right solution.
In those cases does the blockchain still have the URL as well? And you might end up with a collection of bits that matched the hash in the blockchain but was no longer at the original URL? What's the next step then?
(The "artwork may change" bit seems like it becomes even more weird and potentially nightmarish edge-case/potentially-losing-your-purchase-wise.)
Sounds like it has the same value as saying "I used to own this one famous painting before it burned down in a fire."
A hash corresponding to the bits in your file? Sure, that works, you can say "yep, this is the image, I own it." A URL plus a hash + the bits. Sure, that makes sense, even if the URL goes away, you can prove that those particular bits belong to you. A URL that's now dead and nothing else? Nah.
IPFS is basically Bittorrent plus a financing system. Arweave charges US$5/gigabyte for permanent storage on IPFS. This is supposed to be forever, funded by investing the money and speculating in the declining future price of storage.
You can supposedly put academic papers on Arweave's version of IPFS.[1] But if you try "Browse", nothing appears. This acts like another one of those distributed systems that isn't.
[1] https://ss6puabcq3ch.arweave.net/5Yeg3wT4COQL6Bz-tdp9xlmeiwg...
https://arweave.medium.com/arweave-announces-new-funding-fro...
That doesn't match my definition of IPFS at all which is simply "P2P immutable content hosting". How is it a "financing system"?
You can say that this is a stupid game and people shouldn't be playing it. I didn't make it up and I don't take part in it. I'm just trying to tell you what they're doing
If you purchase one that’s worth say >4 figures then, yes, yes you should! Also at that point, you’re either part of the 1% or at the very least owe some due diligence to your investments.
In reality, the internet is a big copy machine and you’re probably safe. But you should still back it up.
There is no mechanism on the Blockchain preventing someone else creating a new NFT with the exact same hash.
But to truly _own_ something, all the cryptographic guarantees in the world won't change the fact that true ownership can only be enforced through violence. And if your private key can be stolen by hackers in countries without extradition treaties, one could argue that anything digital is only "owned" in the absolute weakest sense of the word: no one has tried disputing it yet.
What's to prevent another NFT from pointing to the same data and copying the hash?
But on the blockchain itself, the NFT is just a smart contract (bit of code, bit of data) that knows it's current owner, it's name and a URI pointing at the image. There zero mechanism preventing duplicates.
Hell, it's such an unregulated market that the NFT might be based on a custom smart contract with a backdoor that allows the creator to steal it back at any time.
e.g. the EtherFreakers contract is immutable and contains a git commit hash (line 83: https://etherscan.io/address/0x3a275655586a049fe860be867d10c...), so you can prove you have the code which generates your freaker.
The problem with this is that running servers that store and process one or even multiple blockchains in a searchable way is terribly costly and inefficient. In theory the public ledgers are all safe against locking away data, like Google or Microsoft could do with your accounts in the real web, but in practice nobody wants to be the guy making a loss on serving blockchain views.
If web3 ever gets off the ground, it needs more of these access provider companies. Perhaps even a prebuilt system you can throw onto your own server to participate, like IPFS and other existing decentralised systems provide.
I'm still not clear on the actual benefit of the cryptocurrency web other than the concept of "owning things without legal protection or oversight" which I (and I believe most people) have very little interest in if it comes at the premium it comes at today. From a technical standpoint all of this blockchain stuff is awesome, but it's an awesome solution in search of a problem.
The cryptocurrency crowd is usually drawn to the decentralised, unregulated market, and OpenSea has turned out to be the exact thing blockchains are trying to overthrow.
So it shows that people don't really care about (a) decentralisation or (b) manipulation of the true blockchain output.
thanks to VC money looking to centralize the web3 economy.
It's like a populist movement whose goal is to enrich the existing rich.
The reality however is that market dynamics, acquisition costs, network effects etc prevent this from happening. And these aren't things that crypto can really solve.
[1] https://www.theopendao.com/ [2] https://decrypt.co/89325/sos-token-aidrop-opendao-opensea-wh...
"In theory" the data is open. but I believe that the point of the article is that unless I'm running my own node, data visibility is limited to what someone else tells me. and here, in reality, OpenSea has decided to delist the author's NFT and they have no recourse.
1. anyone who operates a node can contribute time on their node for a share of our revenue
2. anyone can host one of our blockchain crawlers for a share of our revenue
3. anyone can contribute storage to our platform for a share of our revenue
We currently support Ethereum and Polygon, and are expanding to more chains.
I found this an excellent article, but the HN discussion (not calling out your comment specifically) seems to miss the fact that, as programmers, it is fully within OUR power to create the world we want to operate in.
Edit: To clarify - we run our own nodes. Currently on AWS but we are running out of credits soon so soon in our offices and living rooms, and eventually in data centers.
But at the point where they start filtering transactions/addresses, there's going to be big questions about what is the true view of the blockchain.
The potential for single points of failure (or even intentional abuse) does exist because of this de facto dominance of two service providers, but as far as I can tell there's nothing stopping anyone from running their own node and connecting their various cryptocurrency wallets to them other than the money and inconvenience of running your own server.
Indeed, but one could make the same claim re any Web 2 juggernauts like Google and Facebook. You don't need to use them, sure. You can start your own social network. It's just expensive and inconvenient. This is what causes centralization and gatekeeping in the first place. It becomes self-reenforcing.
To get events, just scrape the Facebook website using Selenium and Python. There are online tutorials for this. Harder than it should be, I'll be the first to admit, but easier than blockchain-based systems. (Blockchain isn't the appropriate solution for social media; use a proper federated protocol like ActivityPub or XMPP.)
Then you can just reply to Facebook messages on something other than Facebook. That'll annoy your friends a bit, but that's the cost of them still using Facebook.
The problem with Facebook is not that it's hard to get your data off. It's not, really. The problem is that you have to be a programmer to do so; and blockchain stuff doesn't fix that problem.
As you can imagine it's kind of hard to push back against these bad actors by threatening them to do the same thing to them, due to their sheer size.
(Wouldn't be surprised if they're slurping from middlemen services themselves)
https://github.com/bugout-dev/moonworm
We are committed to keeping this code free. Our policy is only to charge for our operational expertise, but all the code that we use is open source. We are in the process of opening our platform up for decentralization (so anyone can contribute node time, storage, etc.).
Intellectual property is theft.
It still seems that my users on phones and browsers would need to trust me in that case, right?
So one example I’d give - every team I’ve worked on has had to build a local development environment with several nodes to easily spin up with a clean slate for deterministic testing. Teams get sucked into tools like Infura to set these up and then it’s so easy to do the same for deployment they do just that. I think there’s tons of room for Blockchain-as-a-Service tools to improve development and testing processes without forcing centralization on main net deployments.
As is hopefully obvious, I am totally naive here; my questions are genuine. Thanks!
It's way simpler to just connect to Wikipedia.org and download the pages you want to read instead of downloading the whole Wikipedia.org database and keeping it stored and updated on your devices. Same principle.
Leave infrastructure work for other people.
Usually, you still have the “server is selectively lying” problem; unless the users are talking to each other, how do the consensus rules help with this?
(Related to the https://en.wikipedia.org/wiki/Byzantine_fault problem, though that's about forming consensus rather than determining trustworthiness.)
If you're submitting txs to a node that doesn't communicate to the mainnet (they're isolated from it) then any txs that go to it would be void. You could just use that Eth on the proper mainnet as it wouldn't be on the chain. If the node decided to then come onto the mainnet it's chain would be vetoed by the other nodes states and would fork back onto the main chain. Ethereal has Byzantine-Fault Tolerance up to 50% and you don't gain anything by running an isolated node to try trick people.
You mean something like AWS, but that allows me to quickly setup an server containing a node?
The big Blockchain-as-a-Services shut down - both IBM and Azure are gone.
It's the early days, remember how long the internet worked with http:// ? It's only in 2009 I believe that Facebook switched to https://
Check my other comment to see that the future doesn't look that bad: https://news.ycombinator.com/item?id=29847881
only one or two true Ethereum full-nodes
source?[edit] Here. [1] And here. [2]
After examining every which way we could think of to add the Trie state to our Ethereum state, we asked Vitalik for assistance. His first comment to us was “oh you’re one of the few running one of those big, scary nodes.” We asked him if he knew of anyone else running a “big, scary node” to see if we could possibly sync with them. He knew of no one, not even the Ethereum Foundation keeps a full archival copy of the Ethereum chain. [2].
[1] https://librehash.org/ethereum-archival-node-review/Many geth nodes are archival, but we cant see which ones are.
Technically you can tell which Geth nodes are archive nodes with a GetNodeData query over devp2p, although that call is deprecated and will eventually be removed. Its replacement, GetTrieNodes, cannot be used for this.
So, many people run full archive nodes now. Thanks erigon team!
> Every now and then someone will argue on CT that Ethereum full nodes are not complete nodes because archive nodes exist. I decided to run a little experiment to disprove a few things
> The goal was to convert a full node into an archive node, demonstrating that Ethereum full nodes contain all the necessary blockchain data.
> 28 days later, I can confirm that it worked. I started with a 150 GB full node and expanded it to an archive node weighting 2.3 TB, without external network connectivity.
[1] https://twitter.com/marcandu/status/1116807660882530305 [2] https://medium.com/@marcandrdumas/are-ethereum-full-nodes-re...
A full node lets you fully verify the chain's historical states and it lets you interact with the current state. Unless you're running a service that exists solely to allow people to query historical states (like a block explorer service), I don't see why it would be useful to be able to query historical state.
A full node can only give you the current balance, and a list of all transactions that directly transfer eth to that address. Any transaction that transfers eth as the side effect of a smart contract is invisible.
I personally see it as a flaw in the design of eth. You shouldn't need the complete history of states just to find all relevant transactions, but you do.
Besides, the argument that regular users shouldn't need to query such information it doesn't change the fact that the information is unqueriable in a full node, short of spending 28 days transforming it into an archival node.
> Besides, the argument that regular users shouldn't need to query such information it doesn't change the fact that the information is unqueriable in a full node, short of spending 28 days transforming it into an archival node.
If you don't need to query the data, then the data doesn't have to be unpacked and indexed for querying. Seems simple to me.
To transform into an archival node, a full node has to rewind to the very first block, and replay every single transaction.
Since the EVM is Turing complete, this is roughly equilvent to stimulating a computer with years of recorded keyboard and mouse inputs, taking care to record how each input effects state of the computer.
You can't jump to the middle, you have to replay the whole thing.
The EVM is a very simple and rudimentary virtual computer, so replaying the whole thing isn't an impossible task. According to the tweet, it took this guy's computer 28 days to replay 4 years of history.
Git justifies the viability of it's "packing scheme" by actually making everyday use of it.
A full eth node has no snapshots or useful indexes into the archival data. It has to apply the deltas linearly from the beginning. Applying the deltas is very slow, very IO bound, seeking all over the disk.
The data might be there, but it's practically useless. A user who discovers they need some archival data is never going to consider waiting weeks for the nearly 7 years of history to be replayed before running their query. Instead they will head over to etherscan and trust whatever it says.
> The data might be there, but it's practically useless.
The availability of the packed data is useful, just not to the end user of the node. Having this data widely available on the network means that anyone can spin up an archive node by peering with other full nodes, they don't need to discover and peer with the very limited number of other archive nodes, and the network doesn't need to worry about losing that data permanently if all archive nodes go offline.
> A user who discovers they need some archival data is never going to consider waiting weeks for the nearly 7 years of history to be replayed before running their query. Instead they will head over to etherscan and trust whatever it says.
Call me unprincipled but I don't think it's an issue that if a user needs data above and beyond what's needed to fully verify the chain and read and write to it, they're expected to either spin up a more resource-intensive node or retrieve the data from a specialized history service. Statelessness is on the roadmap, so in the long-term the historical data that Etherscan and similar services serve up to you will come with a validity proof anyways.
You can construct many great arguments that the increased centralization is a good thing, or that the upsides are better than the downsides.
What I take issue with is attempts to classify ethereum "Full Nodes" as more than what they are. Yes, they technically contain all the information requires to reconstruct an archival node (at least until statelessness becomes a thing).
They are simply not anywhere near the same thing, and attempts to brand them as the more or less same thing just comes across as denial.
They are the same thing specifically when it comes to:
* Downloading, verifying, and storing every transaction that has ever happened on the network
* Maintaining a tamper-proof, data-complete copy of the blockchain
* Interacting with the blockchain in a maximally verified, maximally secure way
I never said that they were exactly the same thing or that they should be branded as the same thing, I said that they store the same data (by which I mean from an information-theoretic standpoint), which is true.
> What I take issue with is attempts to classify ethereum "Full Nodes" as more than what they are.
I take issue with the attempts to classify them as less than what they are.
What needs to be squashed is the common idea in the OP that "full nodes are not actually full" because there's a "fuller" "archive" node that has the states indexed on-disk. The difference between a full node and an archive node is perfomant historical queryability, not security or data-completeness.
OP says that "access to Ethereum is effectively gate-kept by two centralized entities", which is untrue because you don't need an archive node to access Ethereum, only a full node. OP's idea that an archive node is the only "true Ethereum full-node" is common baloney that pops up often in the cryptocurrency community.
Yes, in theory the full node contains the full blockchain. Yes, it's all you need to verify that any transaction happened. Yes it's tamper proof.
But in reality, it can't show you the full side-effects of every transaction. In reality there are occasionally things things that require archival data. In reality, it's always easier to go to a centralised block explorer, or pay one of the few centralised API services (And I know this from experience, I've synced a full archival node back in 2019, and build a product that required querying it. It was such a pain that these days I'd highly recommend not doing that and just paying for API access)
In reality, the fact that you occationally need to go to etherscan to get the data you need, results in you just going to etherscan anyway, even for the simpler queries when you have a perfectly fine full node sitting there (again, personal experience). Hell, etherscan actually provides more data than an archival node, where else are you going to find the source code for contracts?
In reality... Most people don't even run light nodes. They certainly don't run full nodes. They just use etherscan, or whatever API their 3rd party wallet uses.
That's why in reality, access to ethereum is partially centralised around API providers. Yes, in theory anyone can go around them, set up their own node or create a competing API service at any time. But that's not what happens in reality, and when it comes to the topic of centralisation vs decentralisation, I'd argue that reality is far more important than theory.
A fully scalable, sustainable and decentralized network compensates all infrastructure important to the network, which means mining (consensus) and transaction/data routing. A nice side effect of rewarding data transmission is that you incentivize speed, so scalability can happen naturally with no conflicts of interest between miners and users.
What good is running your own full Ethereum node if OpenSea blocks the NFT you're trying to sell and most of the customers who would want to buy it are going through OpenSea's node?