the_zhang_wei (OP)
Newbie
Offline
Activity: 25
Merit: 1
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 21, 2018, 09:49:56 PM |
|
Hello, Lately I've been thinking in creating a new blockchain but I decided to share the reason why before doing it. I firmly belive that what's holding great platforms such as Ethereum (and their clones) from massive adoption is the gas price which is paid in Ethereum. I believe that having to pay a 'fee' to interact with the ledger is incovenient - Buying ETH with a credit card is complex, expensive and annoying
- Most people don't want to register into 3 or 4 pages to buy crypto
I think fees are fair is you want to transfer value, for instance sending ether from one address to another. I don't think it is fair to interact with smart contracts. I know that fees are also to prevent spam attacks. I'm thinking in creating a new cryptocurrency, similar to Ethereum, but does not require 'gas' to be paid in the currency. Things that will be free: - Interact with smart contracts
- Create transactions with `0` of the native currency.
Things that will require a 'fee' to be paid: - Transfer the native currency
- Create smart contacts.
Why do we need this? I think we need an ubiquitous blockchain, free to use, in which developers can create mainstream applications. For instance, move centralized applications to a blockchain. Think of a Twitter-clone running entirely on the blockchain. It cannot happen in the Ethereum network because of the `gas`. If this seems a good idea I will discuss in further details how I'm planning to prevent spam, reward miners (beside the block reward itself). Cheers, Zhang PS: Please excuse any typos, English is not my first language.
|
|
|
|
ttookk
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 21, 2018, 09:56:32 PM |
|
I can't imagine a way to prevent spam without some type of fee. You could do something like a PoW to let someone interact with a smart contract, which might be neat, but that is just a hidden fee.
Another way might be permissioned smart contracts, where you'd need "tickets" to interact with them, which could be granted to certain addresses… Or bought, so back to a fee then.
I see you point, I just don't see a good solution. I'm interested, though.
|
|
|
|
Mi5h0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 21, 2018, 10:01:23 PM |
|
Have you explored the idea of an EOS platform? I think, interacting with the blockchain will be free for end users on the EOS.
|
|
|
|
the_zhang_wei (OP)
Newbie
Offline
Activity: 25
Merit: 1
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 21, 2018, 10:02:45 PM |
|
I can't imagine a way to prevent spam without some type of fee. You could do something like a PoW to let someone interact with a smart contract, which might be neat, but that is just a hidden fee.
Another way might be permissioned smart contracts, where you'd need "tickets" to interact with them, which could be granted to certain addresses… Or bought, so back to a fee then.
I see you point, I just don't see a good solution. I'm interested, though.
You nailed it. My idea is rather simple. PoW on your transaction.
|
|
|
|
the_zhang_wei (OP)
Newbie
Offline
Activity: 25
Merit: 1
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 21, 2018, 10:11:11 PM |
|
Have you explored the idea of an EOS platform? I think, interacting with the blockchain will be free for end users on the EOS.
EOS does not exists yet. And when it does it will be super centralized. Think of it on a VISA-like company own by ~20 something nodes. Not for me, thank you.
|
|
|
|
ttookk
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 21, 2018, 10:12:11 PM |
|
I can't imagine a way to prevent spam without some type of fee. You could do something like a PoW to let someone interact with a smart contract, which might be neat, but that is just a hidden fee.
Another way might be permissioned smart contracts, where you'd need "tickets" to interact with them, which could be granted to certain addresses… Or bought, so back to a fee then.
I see you point, I just don't see a good solution. I'm interested, though.
You nailed it. My idea is rather simple. PoW on your transaction. Hmm, this might be an interesting idea indeed, but how do you determine the amount of PoW needed? You'll have to set it rather high to prevent spam – interacting with a smart contract from a smartphone will likely not be possible, unless you rent computing power. I don't want to come off too much as a Negative Nelly here, because I like new ideas and new approaches, but you have to ask the hard questions before they are your downfall.
|
|
|
|
d5000
Legendary
Offline
Activity: 4004
Merit: 7114
Decentralization Maximalist
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 21, 2018, 10:30:56 PM |
|
I think fees are fair is you want to transfer value, for instance sending ether from one address to another. I don't think it is fair to interact with smart contracts. The problem is that one of the main bottlenecks of blockchains is space, and every "non-value" transaction use space, too, so charging a fee for it is fair. PoW is just another kind of fee (if it should be effective in spam-reduction, then the electricity costs needed to create the PoW should be as high as a standard transaction fee. Otherwise, you could simply charge a smaller fee and have the same anti-spam effect as with a "easy PoW".). A more "sustainable" solution could be ledger pruning. For interactions which are not important for the state of the blockchain, the message that interacted with the contract would be pruned after it has achieved its purpose. Such a system (albeit without smart contracts) is used, for example, in NXT/Ardor. Burst uses NXT's pruned transactions and supports turing-complete smart contracts, but it charges a mandatory fee, so it's also not ideal. The Ardor child-chain feature could also be a solution if adapted to a chain with support for turing-compĺete smart-contracts, because it allows different asset types in separate "child-chains" which don't bloat the main chain and can be pruned, and in these "child-chains" transactions are not charged a main-chain fee. So there could be a specific "child-chain" for smart contract interaction. There's currently - to my knowledge - no blockchain supporting all needed features (solution: fork Burst, adapt Ardor's child-chains and thrash the mandatory fee?). The "pruning" solution is not a complete solution - analyzing it deeply, the validation work (the other blockchain scalability bottleneck besides space) would not be lowered by it. However, the space saved by pruning could be enough to allow very-low-fee or even fee-less transactions.
|
|
|
|
the_zhang_wei (OP)
Newbie
Offline
Activity: 25
Merit: 1
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 21, 2018, 10:33:07 PM |
|
I can't imagine a way to prevent spam without some type of fee. You could do something like a PoW to let someone interact with a smart contract, which might be neat, but that is just a hidden fee.
Another way might be permissioned smart contracts, where you'd need "tickets" to interact with them, which could be granted to certain addresses… Or bought, so back to a fee then.
I see you point, I just don't see a good solution. I'm interested, though.
You nailed it. My idea is rather simple. PoW on your transaction. Hmm, this might be an interesting idea indeed, but how do you determine the amount of PoW needed? You'll have to set it rather high to prevent spam – interacting with a smart contract from a smartphone will likely not be possible, unless you rent computing power. I don't want to com off too much as a Negative Nelly here, because I like new ideas and new approaches, but you have to ask the hard questions before they are your downfall. I posted here exactly for that. For the hard questions. I won't do any single of code unless it makes complete sense. I think the 'gas' approach that Ethereum has is the correct way of doing. I just don't think gas should come from ether, but rather by showing some PoW that you have done. I haven't thought on too much detail, but I my idea is to perform more than PoW task if needed. To avoid cheating the PoW should has: - A reference (hash) to the last known header (there should be a threshold for 10 or 20 last header). This to prevent doing PoW in parallel to spam the network. The PoW that people do have an expiration date.
- The hash of your transaction (Before the signature, the whole block should be signed). If your transaction needs a lot of gas, you can simple perform two or more PoW hashes..
. From the top of my head I think the format could be something like <previous_hash_or_null>:<hash_of_any_of_the_last_20_blocks>:<my_transaction_hash_(without signature>:<nonce> The goal is to find a hash with 4 or 5 zeros (sha256). And each PoW block should have a fixed gas value. The PoW is attached to your transaction, and it can have 0 or more. In case you're transferring the native currency, it should have none because you should pay a fee (like in Ethereum). It should also be optional, if you can't or don't want to do any PoW, you can always pay a 'fee'. To incentivize miners, *each* PoW block should generate them a 'fee'. So they would get `block reward + fee + generated fees for each PoW block`.
|
|
|
|
Johnnywelsh
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 21, 2018, 10:37:26 PM |
|
Pretty sure Raiblocks has implemented ledger pruning. Never understood why more crypto don't implement it. I like the PoW concept with zero fees, sure some people would still fill ledger with crap but unless they find a way to monetize it that traffic would be limited.
If people had to pay for every interaction with the Internet it would have never become this big.
|
|
|
|
the_zhang_wei (OP)
Newbie
Offline
Activity: 25
Merit: 1
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 21, 2018, 10:40:25 PM |
|
I think fees are fair is you want to transfer value, for instance sending ether from one address to another. I don't think it is fair to interact with smart contracts. - Do you run a full node if you're not a miner?
- Miners can afford to buy more disks space
The problem is that one of the main bottlenecks of blockchains is space, and every "non-value" transaction use space, too, so charging a fee for it is fair.
You're missing the point though. I'm a developer, I dream of building something like twitter but descentralized. I can't unless my users are willing to pay in Ethereum for posting. That makes no sense. I should pay as a developer for posting an smart contract, but my users shouldn't pay gas. PoW is just another kind of fee (if it should be effective in spam-reduction, then the electricity costs needed to create the PoW should be as high as a standard transaction fee. Otherwise, you could simply charge a smaller fee and have the same anti-spam effect as with a "easy PoW".).
Read my reply from above. A more "sustainable" solution could be ledger pruning. For interactions which are not important for the state of the blockchain, the message that interacted with the contract would be pruned after it has achieved its purpose. Such a system (albeit without smart contracts) is used, for example, in NXT/Ardor. Burst uses NXT's pruned transactions and supports turing-complete smart contracts, but it charges a mandatory fee, so it's also not ideal.
That's what IOTA is doing every once in a while. And they have to stop the entire network for that. That is just silly.
|
|
|
|
the_zhang_wei (OP)
Newbie
Offline
Activity: 25
Merit: 1
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 21, 2018, 10:46:29 PM |
|
If people had to pay for every interaction with the Internet it would have never become this big.
You nailed. That's exactly how I think of it.
|
|
|
|
ttookk
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 21, 2018, 11:04:25 PM |
|
I like where this is going. Decentralized Twitter? Sign me up ![Grin](https://bitcointalk.org/Smileys/default/grin.gif) Depending on the direction, I might have some ideas regarding sybil attacks, spam prevention and reputation in my drawers ![Wink](https://bitcointalk.org/Smileys/default/wink.gif) While I agree that you'll have to find a way to make users "pay without realizing that they are paying", which is pretty much what PoW per transaction looks like, you'll still have a problem with users who would be able to completely flood the network due to their vast computing power, while it is virtually impossible to get the needed PoW done on a Samsung Galaxy S III. Any thoughts on how to tackle this problem?
|
|
|
|
d5000
Legendary
Offline
Activity: 4004
Merit: 7114
Decentralization Maximalist
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 21, 2018, 11:34:15 PM |
|
- Do you run a full node if you're not a miner?
- Miners can afford to buy more disks space
If only mining pools (individual miners do not really need that) would run full nodes, then we'd have a centralized system like EOS is. You're missing the point though. I'm a developer, I dream of building something like twitter but descentralized. I can't unless my users are willing to pay in Ethereum for posting. That makes no sense. I should pay as a developer for posting an smart contract, but my users shouldn't pay gas. Where do I miss the point, can you elaborate? The reason why a fee is charged is anti-spam protection, as you already admit proposing to "charge" a PoW for every transaction, like Iota and RaiBlocks/Nano do. If you don't charge a fee in GAS or whatever then you have two choices: 1) try that interactions with smart contracts consume less resources, e.g. by ledger pruning, or 2) limit the transaction throughput by other means (see below). (BTW: If you accept an "oligarchic" network where only miners run full nodes, then you could even fork something like Bitcoin Cash or Unlimited, add smart contracts - e.g. with Counterparty - and you're fine. Blocks would never get full and so zero-fee transactions would be realistic.). A more "sustainable" solution could be ledger pruning. For interactions which are not important for the state of the blockchain, the message that interacted with the contract would be pruned after it has achieved its purpose.
That's what IOTA is doing every once in a while. And they have to stop the entire network for that. That is just silly. At least in NXT they don't need to stop the network for that. The pruning mechanism is automatic and happens constantly. It could be adapted by every other blockchain. If you don't like ledger pruning: Have you looked at Steem? They have a different anti-spam technique, they don't charge a fee but allow only a fixed number of interactions (transactions) per node. The exact number depends on your stake in the network, so you can "buy" more throughput. So in the end for high-frequency users it's a fee, but occasional users that aren't a real "burden" for the blockchain can publish without any cost. (Steem, however, has a registration barrier/cost and is pretty centralized, but the principle would work in other blockchains, too). You even could combine it with your "PoW-fee" if you want. (I'm sorry if my last post sounded like if I wasn't liking your idea - I like it but it needs more elaboration. You need a solution for the spam problem, and as I wrote, PoW is just another kind of fee.)
|
|
|
|
the_zhang_wei (OP)
Newbie
Offline
Activity: 25
Merit: 1
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 22, 2018, 04:43:14 AM |
|
If only mining pools (individual miners do not really need that) would run full nodes, then we'd have a centralized system like EOS is.
I don't think everybody needs to run their own copy of the ledger. https://www.youtube.com/watch?v=vM_Ski2eK6AWhere do I miss the point, can you elaborate? The reason why a fee is charged is anti-spam protection, as you already admit proposing to "charge" a PoW for every transaction, like Iota and RaiBlocks/Nano do. If you don't charge a fee in GAS or whatever then you have two choices: 1) try that interactions with smart contracts consume less resources, e.g. by ledger pruning, or 2) limit the transaction throughput by other means (see below). The point is very simple. I don't want final users (think of a distributed Twitter, or a Facebook) to have to buy my native crypto currency in order to participate or interact with smart contracts. Do you see yourself buying ETH (Which is fairly easier than buying any tinier coin) with credit card? Getting out of exchanges just to use steem (or something similar?). That's not going to take off (BTW: If you accept an "oligarchic" network where only miners run full nodes, then you could even fork something like Bitcoin Cash or Unlimited, add smart contracts - e.g. with Counterparty - and you're fine. Blocks would never get full and so zero-fee transactions would be realistic.).
I'm not an oligarchic, but I believe the ledger should be an append only database no matter what. I think the clients should compress blocks if they wanted to. I'm not completely against your idea of pruning, I just don't see how to do that. If you don't like ledger pruning: Have you looked at Steem? They have a different anti-spam technique, they don't charge a fee but allow only a fixed number of interactions (transactions) per node. The exact number depends on your stake in the network, so you can "buy" more throughput. So in the end for high-frequency users it's a fee, but occasional users that aren't a real "burden" for the blockchain can publish without any cost. (Steem, however, has a registration barrier/cost and is pretty centralized, but the principle would work in other blockchains, too). You even could combine it with your "PoW-fee" if you want.
I will take a closer look on how Steem is solving that. I don't see how to limit the participation of nodes (based on their IP I guess) without a certain degree of centralisation. Which again, many projects have masternodes. If masternodes is the way to go, I think each masternode can throttle each node's activity. I think PoW is simpler though. I'm just thinking out loud and I love your feedback. (I'm sorry if my last post sounded like if I wasn't liking your idea - I like it but it needs more elaboration. You need a solution for the spam problem, and as I wrote, PoW is just another kind of fee.)
On the contrary mate, I love this thread already.
|
|
|
|
d5000
Legendary
Offline
Activity: 4004
Merit: 7114
Decentralization Maximalist
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 22, 2018, 05:17:48 AM |
|
I don't think everybody needs to run their own copy of the ledger. Here I agree, but a certain decentralization is healthy. At least businesses should be able to run full nodes with standard hardware. The point is very simple. I don't want final users (think of a distributed Twitter, or a Facebook) to have to buy my native crypto currency in order to participate or interact with smart contracts. OK, I got it - for usability. Then PoW as anti-spam measure is reasonable. But this is also the reason why I mentioned the Ardor child-chain model. In this model you wouldn't pay fees in the native currency but in the "child-chain" currency (think of it as if it was an ERC20 token). I'm not completely against your idea of pruning, I just don't see how to do that.
Simply check the NXT code (some hints are here). In NXT, however, the transaction header is preserved. Cryptonite (XCN) has a pruning feature, but for all transactions, and only block headers are preserved. Maybe you get some inspiration from one of both. Ardor has a more advanced pruning feature but the version allowing pruning has still not been released. I will take a closer look on how Steem is solving that. I don't see how to limit the participation of nodes (based on their IP I guess) without a certain degree of centralisation. No, as far as I know the restriction is based on the account's address - a transaction simply will be rejected as invalid by the protocol if you exceed your "quota". So this part doesn't need centralization, nor does it need masternodes. To avoid that spammers simply create hundreds or thousands of addresses, there is a fee for address creation if you use the client/wallet directly (if you register through Steemit the fee is paid by the site owners/developers, that's why it looks so centralized, but "under the hood" it's relatively decentralized, apart from the DPoS consensus). It's a pretty complex system but it seems to work pretty fine.
|
|
|
|
ttookk
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 22, 2018, 07:34:11 AM |
|
If only mining pools (individual miners do not really need that) would run full nodes, then we'd have a centralized system like EOS is.
I don't think everybody needs to run their own copy of the ledger. https://www.youtube.com/watch?v=vM_Ski2eK6A(…) I think it is important that everyone is able to run a full node if they wish, though. However, all in all, I love the idea of having something which is pretty much a "service layer" and have a "consumer layer" on top. I believe eventually, this is where Crypto is headed anyway. Do you think maybe some type of Proof of Capacity / renting out disk space might be the way to go? If you want to build a decentralized Twitter, you'll have a space problem anyway. Messages have to be stored somewhere and you can't prune them (which is why I think pruning is not that important anyway). However, I'm afraid some 16GB Smartphone won't have enough disk space to make any kind of impact, which bring us back to square one, doesn't it…
|
|
|
|
Mi5h0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 22, 2018, 07:41:08 AM |
|
Have you explored the idea of an EOS platform? I think, interacting with the blockchain will be free for end users on the EOS.
EOS does not exists yet. And when it does it will be super centralized. Think of it on a VISA-like company own by ~20 something nodes. Not for me, thank you. Yeah, you're darn right about that! I see now where you are ending up on this.
|
|
|
|
the_zhang_wei (OP)
Newbie
Offline
Activity: 25
Merit: 1
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 22, 2018, 07:06:05 PM |
|
I don't think everybody needs to run their own copy of the ledger. Here I agree, but a certain decentralization is healthy. At least businesses should be able to run full nodes with standard hardware. Not everybody needs a copy of the ledger. Even on my computer right now, all the clients are thin clients (Ethereum and bitcoin). Ethereum blockchain size is over ~400GB right now. It does not fit in my brand new laptop, yet I'm still able to use it. But it's a good thing that people are concern about it and I think I found something. What if we have two different chains? One for the native currency (Which does pay fee) and another for smart contracts execution (which are paid with PoW). Because smart contracts execution will not need the native currency (just PoW) I think we can discard my initial idea of '0' value transactions with no fees. All transactions that are going on the value layer should pay fees. All transactions being executed in the execution layer are paid with PoW. I think that separation is fair enough. People would still need the native currency for creating smart contracts, but interacting with them are paid with PoW. Sounds better? Cheers,
|
|
|
|
the_zhang_wei (OP)
Newbie
Offline
Activity: 25
Merit: 1
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 22, 2018, 07:23:41 PM |
|
If only mining pools (individual miners do not really need that) would run full nodes, then we'd have a centralized system like EOS is.
I don't think everybody needs to run their own copy of the ledger. https://www.youtube.com/watch?v=vM_Ski2eK6A(…) I think it is important that everyone is able to run a full node if they wish, though. However, all in all, I love the idea of having something which is pretty much a "service layer" and have a "consumer layer" on top. I believe eventually, this is where Crypto is headed anyway. Do you think maybe some type of Proof of Capacity / renting out disk space might be the way to go? If you want to build a decentralized Twitter, you'll have a space problem anyway. Messages have to be stored somewhere and you can't prune them (which is why I think pruning is not that important anyway). However, I'm afraid some 16GB Smartphone won't have enough disk space to make any kind of impact, which bring us back to square one, doesn't it… Smartphones can talk to 2 or 3 API (or even more) providers which runs the entire copy of the ledger (both layers).
|
|
|
|
d5000
Legendary
Offline
Activity: 4004
Merit: 7114
Decentralization Maximalist
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 22, 2018, 09:55:21 PM |
|
What if we have two different chains? One for the native currency (Which does pay fee) and another for smart contracts execution (which are paid with PoW). Yep, that's a good idea and similar to the child-chain stuff I mentioned - myself I was thinking about a similar service some time ago. Cryptonite (XCN) which has a strong pruning feature (and so the blockchain size is small even with a high throughput) would have been my choice for a base for the "interaction" chain, which would be a sidechain of the main "monetary chain". But now again to your idea to a "decentralized Twitter": Is it really necessary that all messages would be stored on-chain? What if you create a partly off-chain model? You could think about a Lightning-like model, but I think for a publication chain maybe a model where messages are published in a BitTorrent-like network would be fine - but to ensure integrity the publisher can choose to simply store a hash of his last tweets in the blockchain. If he makes an important tweet he could always choose to store it entirely, but then paying a fee ... (I'm only brainstroming a bit here ...)
|
|
|
|
|