Bitcoin Forum
December 13, 2024, 03:06:57 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 [2] 3 »  All
  Print  
Author Topic: Idea about a new blockchain  (Read 556 times)
the_zhang_wei (OP)
Newbie
*
Offline Offline

Activity: 25
Merit: 1


View Profile
May 22, 2018, 10:17:36 PM
 #21

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 ...)

Another idea that crossed my mind, but I don't know yet how to implement, is that each smart contract has their own blockchain, aside from the main monetary chain (here smart contract's definition and native currency are going to be stored).

If you want to run a full node, you would have many blockchains, if you only care about your own DAPP's blockchain you can do so using less resources (Monetary chain + my dapp chain).

Do you think this may be a better idea?
labake
Member
**
Offline Offline

Activity: 308
Merit: 15


View Profile
May 22, 2018, 10:26:51 PM
 #22

If you would be creating a blockchain as your content was all about with these features, you are absolutely good to go. I would really say yes and comply with your idea and infact would assist in all ways to learn much more bitter. Everything would be split and not on only on those existing blockchain.
ttookk
Hero Member
*****
Offline Offline

Activity: 994
Merit: 513


View Profile
May 22, 2018, 10:55:10 PM
 #23

This thing is getting momentum, I love it Smiley

I think you want to go bigger than "just" a blockchain based, decentralized Twitter, but for the sake of simplicity, let's keep is a the main example.


(…)

Smartphones can talk to 2 or 3 API (or even more) providers which runs the entire copy of the ledger (both layers).

My concern wasn't so much the node/storage side, but the PoW side. What you could come up with is some type of "PoW-as-a-service" solution, where nodes provide their computing power for a service. What comes to mind is the client side of things: Maybe a client which shows you ads would be a way to reimburse the client provider, who at the same time provides you with a means to create PoWs. I'd rather pay a small fee, but others might be fine with the ad route.

In fact, the whole PoW-as-a-service thind opens up a number of possible ways to monetize unused assets. Storage, obivously, especially in a system which probably can't feasibly scale if you'd put every message (and every picture) on the mainchain.

Another thing, especially for smartphones, would be internet-by-proxy/internet-routing. Let me elaborate on that a bit:

A few years back, I heard of an app called firechat or something like that. It did something rather simple, yet neat: it looked for other phones near you and got in contact with them directly. I'm not sure what it used exactly, I don't think it was Bluetooth, more like a local lan (I'm not familiar with this type of setup). Now, the interesting thing was that in some countries with poor internet infrastructure, people used it as relays to get messages into the internet. A message(like email or whatever) jumped from phone to phone until eventually, it got to a phone that was connected to the internet.

I've always wondered why this wasn't explored more, especially as a way to earn some tokens or whathaveyou. I mean, combine that with a decentralized Twitter…

Looking at sm
the_zhang_wei (OP)
Newbie
*
Offline Offline

Activity: 25
Merit: 1


View Profile
May 23, 2018, 02:35:43 PM
 #24

Thanks guys for you feed. What would be the next logical step? I was thinking in writing a whitepaper or maybe a (power point?) presentation with my ideas and plans, try to get more developers interested and make it happen.

Suggestions?

Another thing, especially for smartphones, would be internet-by-proxy/internet-routing. Let me elaborate on that a bit:

A few years back, I heard of an app called firechat or something like that. It did something rather simple, yet neat: it looked for other phones near you and got in contact with them directly. I'm not sure what it used exactly, I don't think it was Bluetooth, more like a local lan (I'm not familiar with this type of setup). Now, the interesting thing was that in some countries with poor internet infrastructure, people used it as relays to get messages into the internet. A message(like email or whatever) jumped from phone to phone until eventually, it got to a phone that was connected to the internet.

I've always wondered why this wasn't explored more, especially as a way to earn some tokens or whathaveyou. I mean, combine that with a decentralized Twitter…

Looking at sm

I've seen projects like this before, it's a doable idea since all nodes will just broadcast the message (which they don't understand because it's encrypted) until the real recipient gets the message and deciphers it.

https://www.indiegogo.com/projects/sonnet-most-advanced-wireless-mesh-network#/

I get your idea though, people would broadcast until one of the nodes kindly publish the transaction to the Internet. Neat idea, I like it. It's a bit out of my scope of knowledge though, I'm not an Android/iOS developer.
ttookk
Hero Member
*****
Offline Offline

Activity: 994
Merit: 513


View Profile
May 23, 2018, 06:42:42 PM
 #25

Thanks guys for you feed. What would be the next logical step? I was thinking in writing a whitepaper or maybe a (power point?) presentation with my ideas and plans, try to get more developers interested and make it happen.

Suggestions?

Another thing, especially for smartphones, would be internet-by-proxy/internet-routing. Let me elaborate on that a bit:

A few years back, I heard of an app called firechat or something like that. It did something rather simple, yet neat: it looked for other phones near you and got in contact with them directly. I'm not sure what it used exactly, I don't think it was Bluetooth, more like a local lan (I'm not familiar with this type of setup). Now, the interesting thing was that in some countries with poor internet infrastructure, people used it as relays to get messages into the internet. A message(like email or whatever) jumped from phone to phone until eventually, it got to a phone that was connected to the internet.

I've always wondered why this wasn't explored more, especially as a way to earn some tokens or whathaveyou. I mean, combine that with a decentralized Twitter…

Looking at sm

I've seen projects like this before, it's a doable idea since all nodes will just broadcast the message (which they don't understand because it's encrypted) until the real recipient gets the message and deciphers it.

https://www.indiegogo.com/projects/sonnet-most-advanced-wireless-mesh-network#/

I get your idea though, people would broadcast until one of the nodes kindly publish the transaction to the Internet. Neat idea, I like it. It's a bit out of my scope of knowledge though, I'm not an Android/iOS developer.

Well, to be honest, all of this is pretty much out of my scope of knowledge, including the next logical step. The problem is that almost everyone is working on their own stuff, but maybe write a whitepaper, then reach out to some public figures you trust, which are not directly associated with concrete projects, such as Andreas Antonopoulos (although guys like Vitalik Buterin, Zooko Wilcox, Charlie Lee and so on seem to be relatively open to communication), not in a way that implies that you want them on board, but ask them this very question: "I have this idea, what would you say the next logical step would be? How can I reach out to people?" That's probably what I would do if I wanted to commit myself to such a project.

Also, get people involved as early as possible. You want others to understand what you are doing, be it to discuss ideas, in case of you having to stop working on the project for whatever reason and so on.

Here's another thought on the PoW-as-a-service thing: I like it because it keeps the first layer extremely simple. You could build all kinds of stuff on top of that, without having the massive clusterfuck which is ethereum. Multiple languages? No problem. Private chains? Go for it. This is really great, because I think, if you were to move to multiple layer blockchain solutions (i.e. off-chain scaling, such as lightning network and so on), you don't have to make compromises as to what the first layer looks like. So this would be my approach: keep the first layer as simple as possible. I'm not sure whether this is inside the scope of what you are working on, it was just a thoguth I just had.

In that regard, you wouldn't have to work on the Internet-by-relay thing. Let someone else build it.
d5000
Legendary
*
Offline Offline

Activity: 4130
Merit: 7748


Decentralization Maximalist


View Profile
May 23, 2018, 10:12:41 PM
 #26

Another idea that crossed my mind, but I don't know yet how to implement, is that each smart contract has their own blockchain, aside from the main monetary chain (here smart contract's definition and native currency are going to be stored).

If you want to run a full node, you would have many blockchains, if you only care about your own DAPP's blockchain you can do so using less resources (Monetary chain + my dapp chain).

Do you think this may be a better idea?
I think it's a good idea (that's basically how Lisk works) but the problem is that then you must take care that the security of every sidechain is ensured by a sufficient number of validators. The incentive system for that may be pretty complex. The "child chain" model I mentioned earlier may be simpler as the validators would be basically the same ones, but it gives less scalability advantages. Every model comes with some sort of tradeoff ...

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
the_zhang_wei (OP)
Newbie
*
Offline Offline

Activity: 25
Merit: 1


View Profile
May 23, 2018, 10:36:09 PM
 #27

Another idea that crossed my mind, but I don't know yet how to implement, is that each smart contract has their own blockchain, aside from the main monetary chain (here smart contract's definition and native currency are going to be stored).

If you want to run a full node, you would have many blockchains, if you only care about your own DAPP's blockchain you can do so using less resources (Monetary chain + my dapp chain).

Do you think this may be a better idea?
I think it's a good idea (that's basically how Lisk works) but the problem is that then you must take care that the security of every sidechain is ensured by a sufficient number of validators. The incentive system for that may be pretty complex. The "child chain" model I mentioned earlier may be simpler as the validators would be basically the same ones, but it gives less scalability advantages. Every model comes with some sort of tradeoff ...

My idea is that each smart contract has their own blockchain, as I mentioned before, *but* the main chain has a reference to their last valid node (a hash). By doing so, the smart contract's blockchain is a secure as the main chain (which is secure with Proof of work, stake or any other method (I think PoW is good for starters)).

(A) <- (B) <- (C) <- (F) <- (H)
            |_(A') <- (A1')

Let's assume that in block "H" the smart contract A' is updated, then inside the block "H" there will be something like "the new head of blockchain A' is A1'".

TL;DR the sidechains are not secured with PoW or anything but with a reference to the newer head block on the main chain.

That's my idea so far, I'm now creating a document with some formal specification to ask for more feedback, I'll publish the document in here first.
FOUAD1994
Newbie
*
Offline Offline

Activity: 224
Merit: 0


View Profile
May 23, 2018, 10:45:16 PM
 #28

There is a lot of idea behidn the blockchaine technoil:ogy and they are all good idea
ttookk
Hero Member
*****
Offline Offline

Activity: 994
Merit: 513


View Profile
May 24, 2018, 07:22:26 AM
 #29

Another idea that crossed my mind, but I don't know yet how to implement, is that each smart contract has their own blockchain, aside from the main monetary chain (here smart contract's definition and native currency are going to be stored).

If you want to run a full node, you would have many blockchains, if you only care about your own DAPP's blockchain you can do so using less resources (Monetary chain + my dapp chain).

Do you think this may be a better idea?
I think it's a good idea (that's basically how Lisk works) but the problem is that then you must take care that the security of every sidechain is ensured by a sufficient number of validators. The incentive system for that may be pretty complex. The "child chain" model I mentioned earlier may be simpler as the validators would be basically the same ones, but it gives less scalability advantages. Every model comes with some sort of tradeoff ...

My idea is that each smart contract has their own blockchain, as I mentioned before, *but* the main chain has a reference to their last valid node (a hash). By doing so, the smart contract's blockchain is a secure as the main chain (which is secure with Proof of work, stake or any other method (I think PoW is good for starters)).

(A) <- (B) <- (C) <- (F) <- (H)
            |_(A') <- (A1')

Let's assume that in block "H" the smart contract A' is updated, then inside the block "H" there will be something like "the new head of blockchain A' is A1'".

TL;DR the sidechains are not secured with PoW or anything but with a reference to the newer head block on the main chain.

That's my idea so far, I'm now creating a document with some formal specification to ask for more feedback, I'll publish the document in here first.

That looks a bit like the idea behind Lisk, which has a strong sidechain focus. If you haven't, you might want to check it out.
ttookk
Hero Member
*****
Offline Offline

Activity: 994
Merit: 513


View Profile
May 25, 2018, 11:04:56 PM
 #30

(…)

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.


(…)


Here is something I missed before, I think it hasn't been adressed yet:

The assumption was that Gas was needed as an anti spam measure, but it also needed to incentivise miners to include an interaction or a transaction in the blockchain. Thus, unless I'm missing something, having a pure PoW as a means to prevent spam is either not enough or you'd need to force miners to include these kinds of transactions. Or am I missing something here?
the_zhang_wei (OP)
Newbie
*
Offline Offline

Activity: 25
Merit: 1


View Profile
May 26, 2018, 03:45:32 AM
 #31

(…)

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.


(…)


Here is something I missed before, I think it hasn't been adressed yet:

The assumption was that Gas was needed as an anti spam measure, but it also needed to incentivise miners to include an interaction or a transaction in the blockchain. Thus, unless I'm missing something, having a pure PoW as a means to prevent spam is either not enough or you'd need to force miners to include these kinds of transactions. Or am I missing something here?

I thought of mentioned it, but apparently not. Well, the PoW can be translated to gas. Think of it like the PoW that people are done in order to interact with smart contracts are like coupons that miners can redeem for their equivalent in 'fees'. At the end of the day it would be the same for the miners to process transactions that pay fee or transaction that have done and include some PoW in them.

The difficulty of the PoW would be used to measure how much gas a PoW worth.

Is the idea behind this clear?
the_zhang_wei (OP)
Newbie
*
Offline Offline

Activity: 25
Merit: 1


View Profile
May 26, 2018, 04:10:45 AM
 #32

Thanks everyone for you feedback.

I'm now writing a formal specification,a whitepaper answering all the questions that you guys asked here and more. I will also put a website so more people can know about my idea. I think I'll name project Andromeda (as a reference to the many chains) and the native coin should be named Shun (Google why).

So far I can do the prototype, I'm a Golang developer and I have experience with the Geth. My prototype will be a fork off Ethereum, I think it would be crazy not to start off Geth/Ethereum.
ttookk
Hero Member
*****
Offline Offline

Activity: 994
Merit: 513


View Profile
May 26, 2018, 09:21:57 AM
Last edit: May 26, 2018, 09:44:17 AM by ttookk
 #33

(…)

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.


(…)


Here is something I missed before, I think it hasn't been adressed yet:

The assumption was that Gas was needed as an anti spam measure, but it also needed to incentivise miners to include an interaction or a transaction in the blockchain. Thus, unless I'm missing something, having a pure PoW as a means to prevent spam is either not enough or you'd need to force miners to include these kinds of transactions. Or am I missing something here?

I thought of mentioned it, but apparently not. Well, the PoW can be translated to gas. Think of it like the PoW that people are done in order to interact with smart contracts are like coupons that miners can redeem for their equivalent in 'fees'. At the end of the day it would be the same for the miners to process transactions that pay fee or transaction that have done and include some PoW in them.

The difficulty of the PoW would be used to measure how much gas a PoW worth.

Is the idea behind this clear?

Ah yes, I thought about something like this… It's kinda like the miner providing a pool. However, in that case, it goes back to the question, what if you can't provide the needed PoW because your computer (or rather your phone) isn't powerful enough?

Also, what would a transaction look like in this case? Because if a sender would have to provide PoW right from the beginning, it is potentially a part of every miner's pool, which means nobody is really profiting from it...

(…)

I think I'll name project Andromeda (as a reference to the many chains) and the native coin should be named Shun (Google why).

(…)

I assume you meant Shun the Emperor? I don't realls see a connection between Andromeda and him. Why not go with something a bit closer, like Shiji?

https://en.wikipedia.org/wiki/Records_of_the_Grand_Historian

Also, "Shun" is an english word with not the most ideal meaning.

https://www.merriam-webster.com/dictionary/shun
the_zhang_wei (OP)
Newbie
*
Offline Offline

Activity: 25
Merit: 1


View Profile
May 29, 2018, 04:41:11 AM
 #34

I assume you meant Shun the Emperor? I don't realls see a connection between Andromeda and him. Why not go with something a bit closer, like Shiji?

https://en.wikipedia.org/wiki/Records_of_the_Grand_Historian

Also, "Shun" is an english word with not the most ideal meaning.

https://www.merriam-webster.com/dictionary/shun

I wasn't aware of the meaning of Shun in English, but my reference was apparently too obscure. I meant 'Shun' because of https://en.wikipedia.org/wiki/Andromeda_Shun

Anyways, here is the first version of the whitepaper,

https://github.com/iam-zhang-wei/whitepaper/blob/master/README.md

I wrote in a hurry, I will polish it up tonight but I think it is good enough to get even more feedback.
ttookk
Hero Member
*****
Offline Offline

Activity: 994
Merit: 513


View Profile
May 29, 2018, 08:02:03 AM
Last edit: May 29, 2018, 08:18:39 AM by ttookk
 #35

Good start, I have some questions, though:

Quote
How to incentive miners?

Miners should be economically incentive to process the free transactions the same way do process transactions that pays a fee (all transactions in the economic layers must pay a fee). In order to archive that, the miners can redeem the proof of work included in the free transactions. Think of it like the proof-of-work performed by the clients are coupons that the miners can redeem and for native currency that will be included in the block rewards (like a regular fee).

Thus, the interaction with the smart contracts are not free, the gas required to execute the smart contract is paid as proof of work.

How does this coupon system work exactly? Is there a lottery, is there a reward-per-coupon-system? Redeeming the PoW as a classic PoW, with the miners being essentially pool operators and the senders contributing to the pool won't work.

In either case, this will lead to the effect that every block will be full. If nothing else, miners will fill them themselves, just to not miss out on the rewards. This isn't necessarily a bad thing, just something to keep in mind.

Quote
Why having many blockchains?

Having a separated blockchain for each smart contract has advantages:

    The main chain is smaller.
    Each blockchain is well scoped
        Calculate the global state of smart contract is simpler and faster.z
        Busy/popular smart contracts will have longer chains, while the main chain growth at a predictable pace.

The blocks in the main chain will have references to the newest blocks created in the side chains. That means that the side chains are going to be secure through the main chain, simplifying things for consensus (which is happening only in the main chain).

Where is the data of sidechains stored? How are those who store it incentivised to do so?
the_zhang_wei (OP)
Newbie
*
Offline Offline

Activity: 25
Merit: 1


View Profile
May 30, 2018, 04:06:14 AM
 #36

Good start, I have some questions, though:

Thank you, your help is invaluable, the discussion really helps to sharp my idea.

Quote
How does this coupon system work exactly? Is there a lottery, is there a reward-per-coupon-system? Redeeming the PoW as a classic PoW, with the miners being essentially pool operators and the senders contributing to the pool won't work.

It will be directly a reward per coupon system.

Let me define the Proof-of-work that is needed for interacting with the smart contracts. I'm talking about something that would take an average computer or an smart-phone 15 - 30seconds to calculate. It's not as nearly as intense as the miner's proof-of-work. It would probably be a CPU-friendly (GPU-unfriendly) algorithm, something like what $VRM has implemented.

The data they need to do the Proof-of-work onto will have reference to the last known head of the main chain, and the last known head of the smart-contract chain. There will be a threshold (~10 blocks?). By doing so, we make sure that the proof-of-work have an expiration date. So even if someone have "unlimited" CPU power, they would be able to calculate online a limited proof-of-work.

Last but not least, the miners will get more rewards from the block rewards and fees than from smart contract execution.


Quote
In either case, this will lead to the effect that every block will be full. If nothing else, miners will fill them themselves, just to not miss out on the rewards. This isn't necessarily a bad thing, just something to keep in mind.

I think those steps are good enough to encourage PoW from "real" users and discourage miners from filling the blocks.

I will update the whitepaper with more technical details.

Quote
Where is the data of sidechains stored?

You mean internally? I think into two different databases (logically). One database would be the main chain, the other all the other blockchains. What matters the most is the main chain, because that has all the consensus.

Quote
How are those who store it incentivised to do so?

Miners (solo and pools) will have to have the entire database. Regular users will only need the mainchain and possible the smart-contract they care about. There is no real incentive for regular users to have the entire blockchains.
ttookk
Hero Member
*****
Offline Offline

Activity: 994
Merit: 513


View Profile
May 30, 2018, 08:00:54 AM
 #37

Good start, I have some questions, though:

Thank you, your help is invaluable, the discussion really helps to sharp my idea.


Well, I hope you'll remember this when you've become a millionaire  Wink Grin


Quote
How does this coupon system work exactly? Is there a lottery, is there a reward-per-coupon-system? Redeeming the PoW as a classic PoW, with the miners being essentially pool operators and the senders contributing to the pool won't work.

It will be directly a reward per coupon system.

Let me define the Proof-of-work that is needed for interacting with the smart contracts. I'm talking about something that would take an average computer or an smart-phone 15 - 30seconds to calculate. It's not as nearly as intense as the miner's proof-of-work. It would probably be a CPU-friendly (GPU-unfriendly) algorithm, something like what $VRM has implemented.

The data they need to do the Proof-of-work onto will have reference to the last known head of the main chain, and the last known head of the smart-contract chain. There will be a threshold (~10 blocks?). By doing so, we make sure that the proof-of-work have an expiration date. So even if someone have "unlimited" CPU power, they would be able to calculate online a limited proof-of-work.


I still don't really see how this might play out in practice, maybe an example would help?

Scenario: A miner mines a block and includes 10 TXs with one PoW-coupon each. What is happening now?

Is there a simple "number of coupons per block" system, which forces miners to include a minimum number of TXs in a block to get the full block reward?

Is there a fixed payout per coupon and he would have earned more by including 11 TXs? So, would that mean that more or less coins will be created according to the number of TXs made?

Is there a payout pool and every X blocks, it gets divided between the miners of the last X blocks, according to the number of coupons they earned in that time?

In the two latter cases, you'll have a problem, which is, that not every PoW-coupon will be worth the same. TXs will be of different sizes and miners will have an incentive to include the smallest possible TXs, because they can get more coupons per block this way. Possible solutions are:

A maximum number of coupons per block.

Make it a "coupon per XX bytes TX size" system. Bigger TXs have to provide multiple coupons. This is still exploitable, because of thresholds. If you have a 0.5 kb TX and a 0.9 kb TX and both are one coupon, miners will try to generate as many 0.5 kb TXs as possible and will not include bigger TXs.

Yes, I think an expiration date is needed to prevent attacks. We will see what number makes the most sense, but I am somewhat afraid that there won't be a perfect magic number. Even if the algo is CPU-friendly, the system could still be attacked by renting a big amount of hashing power. You'd probably need some type of difficulty adjustment system for the PoW coupons, but when under atack, this might keep weaker devices (older smartphones) from being able to do PoW.



Quote
In either case, this will lead to the effect that every block will be full. If nothing else, miners will fill them themselves, just to not miss out on the rewards. This isn't necessarily a bad thing, just something to keep in mind.

I think those steps are good enough to encourage PoW from "real" users and discourage miners from filling the blocks.


I think miners will include as many "real" TXs as possible, because they don't have to do the work. But at the same time, if they are unable to fill up a block with as many TXs as possible, they will miss out on coupons. So they will fill the empty space with TXs they generated themselves. I don't think this is a bad thing per se, it might even be easier to make this the only type of block reward.
the_zhang_wei (OP)
Newbie
*
Offline Offline

Activity: 25
Merit: 1


View Profile
June 01, 2018, 08:01:23 PM
 #38

Quote

I still don't really see how this might play out in practice, maybe an example would help?

Scenario: A miner mines a block and includes 10 TXs with one PoW-coupon each. What is happening now?

An ethereum transaction looks like this:

 * nonce - transaction sequence number fr the sending account
 * gasprice - price you are offering to pay
 * startgas - maximum amount of gas allowed for the transaction
 * to - destination address (account or contract address)
 * value - eth to transfer to the destination, if any
 * data - all of the interesting stuff goes here
 * v - along with r and s makes up the ECDSA signature
 * r
 * s

Because we do not use Gas, the gasprice will be 0 and in the startgas a sequence of bytes will be included instead

 * <Last known header hash><local nonce>
    * sha256(<Last known header hash><local nonce><transaction nonce><value>) = must start with 5 or 6 zeros.
    * The <local nonce> needs to change until a hash with 5 or 6 leading zeros is found.
 
The main goal is to throttle, you need either to pay with gas or with a PoW hash.

Back to your question. Will miner create random transactions to claim the reward? I think so, at the beginning at least. They would have no incentives to keep doing so once the network have real activity. Remember:

 * It costs them time, the PoW would take at least 20 seconds per transaction
 * It is not reusable
 * It expires.

What would miners do with the transaction? They will execute it and after that they will claim the fees costs in $Perseus. Pretty much how gasprice and startgas are transformed to Ether in the etherum network.

If the transaction someone is trying to execute would need a lot of 'gas', they can always include two or even three PoW hashes.

Quote
Is there a simple "number of coupons per block" system, which forces miners to include a minimum number of TXs in a block to get the full block reward?

Is there a fixed payout per coupon and he would have earned more by including 11 TXs? So, would that mean that more or less coins will be created according to the number of TXs made?

Is there a payout pool and every X blocks, it gets divided between the miners of the last X blocks, according to the number of coupons they earned in that time?

In the two latter cases, you'll have a problem, which is, that not every PoW-coupon will be worth the same. TXs will be of different sizes and miners will have an incentive to include the smallest possible TXs, because they can get more coupons per block this way. Possible solutions are:

A maximum number of coupons per block.

Make it a "coupon per XX bytes TX size" system. Bigger TXs have to provide multiple coupons. This is still exploitable, because of thresholds. If you have a 0.5 kb TX and a 0.9 kb TX and both are one coupon, miners will try to generate as many 0.5 kb TXs as possible and will not include bigger TXs.

Yes, I think an expiration date is needed to prevent attacks. We will see what number makes the most sense, but I am somewhat afraid that there won't be a perfect magic number. Even if the algo is CPU-friendly, the system could still be attacked by renting a big amount of hashing power. You'd probably need some type of difficulty adjustment system for the PoW coupons, but when under atack, this might keep weaker devices (older smartphones) from being able to do PoW.

Think of it like Ethereum and gas. But Andromeda will add a PoW to 'gas' algorithm. In Ethereum there is no block size limit but there is a 'gas' per block limit. That's reasonable I think.

Quote
I think miners will include as many "real" TXs as possible, because they don't have to do the work. But at the same time, if they are unable to fill up a block with as many TXs as possible, they will miss out on coupons. So they will fill the empty space with TXs they generated themselves. I don't think this is a bad thing per se, it might even be easier to make this the only type of block reward.

I think it's fair, as long as someone is paying with CPU time, the miner who mine a block should collect the rewards.


I will try to update the paper with more in dept details this weekend. I couldn't do that earlier this week, I've been busy at work.
ttookk
Hero Member
*****
Offline Offline

Activity: 994
Merit: 513


View Profile
June 01, 2018, 09:14:56 PM
 #39

Yes, what you describe is quite clear. Miners will have an incentive to include TXs of others because they weren't required to do the work, so it's basically "free" for them.

Maybe what I was trying to point out is too obvious, but the PoW provided by the senders, not the miners, is pretty much worthless from the moment they broadcast it. So, miners still have to mine "traditionally", without the PoW of the senders being any help and you need a system that rewards the miners.

Thus, you need a second reward system to reward miners for including blocks. My questions are, 1.: How will that look like? Do you have a percentage going into a pool that gets distributed based on number of TXs/coupons every X blocks?

This looks like an answer:

(…)

Think of it like Ethereum and gas. But Andromeda will add a PoW to 'gas' algorithm. In Ethereum there is no block size limit but there is a 'gas' per block limit. That's reasonable I think.

(…)

I could imagine something like this:

- Every block can hold a maximum number of coupons*.

- The block reward is <Base number of PERSEUS> * <Number of coupons included> + <fees from deploying smart contracts and so on>.

So, a miner would want to have as many coupons per block as possible.

*I would make a difference between TXs and coupons, because I think it's very probable that different types of TXs will have different sizes, different difficulties and so on. YOu wouldn't want miners to favor some TXs over others due to their complexity, so you'd hve to find a system that provides more rewards per TXs for more complex TXs.
the_zhang_wei (OP)
Newbie
*
Offline Offline

Activity: 25
Merit: 1


View Profile
June 02, 2018, 03:56:03 AM
 #40

I could imagine something like this:

- Every block can hold a maximum number of coupons*.

Agree. In Ethereum there is a max number of 'gas' per block. Andromeda is introducing a PoW to 'gas'. So that limitation is already in place.  Let's assume that 10,000 transactions per block.

Can a pool of miners generate 10,000 random calls to a smart contract to fill up the blocks? Yes but...

 * It's risky, generate 10,000 PoW would take a lot of CPU time.
 * They are not 100% sure they would "cash out" that PoW. Only the miner which found the block can claim those fees generated by the PoW.

Just to be absolutely sure we're on the same page let's have some concepts clear:

  * Miner PoW: It's what Bitcoin/Ethereum miners do. Secures the network. Makes each block 'read only'.
  * Client PoW (I think it should be named Gas-PoW): It's a proof that the client have the right to interact to a smart contract. It's a proof the user is doesn't want to pay with $Perseus but they spend 20 - 30 seconds calculating something. It takes less then a microsecond to verify if the user indeed spend that amount of CPU or not.

Quote
- The block reward is <Base number of PERSEUS> * <Number of coupons included> + <fees from deploying smart contracts and so on>.

This is also correct. Miners will be rewarded with block reward, all the fees, and all the fees generated by the Gas-PoW.

Quote
So, a miner would want to have as many coupons per block as possible.

*I would make a difference between TXs and coupons, because I think it's very probable that different types of TXs will have different sizes, different difficulties and so on. YOu wouldn't want miners to favor some TXs over others due to their complexity, so you'd hve to find a system that provides more rewards per TXs for more complex TXs.

That's already solved by Ethereum with the 'gas' concept. If your smart contract will do a lot more, you need to pay more gas. Andronema is only introducing a PoW to gas. Say, you call a very "expensive" function in a smart contract, perhaps you would need to calculate two or three Gas-PoW hashes. That's alright if you have a modern computer. You would also have the option to just pay.
Pages: « 1 [2] 3 »  All
  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!