[ANN] Peercoin Advanced Relay Subnet: P2SH update & call for minting power


#1

The Peercoin Advanced Relay Subnet (PARS) is a subnet of the peercoin network that can mint non-standard transactions without forking the peercoin chain.

In short, it made it possible to get the following OP_RETURN transaction in the peercoin chain:

txnid: 3eace20c260a93865146f5d0761350e01079d9d933bbbbd0ed9dc52241ce261e
data:
Ezekiel 25:17 The path of the righteous man is beset on all sides by the iniquities of the selfish and the tyranny of evil men.
Blessed is he who in the name of charity and good will shepherds the weak through the valley of darkness,
for he is truly his brother's keeper and the finder of lost children. And I will strike down upon thee with great vengeance and furious anger
those who attempt to poison and destroy my brothers. And you will know my name is the Lord when I lay my vengeance upon thee.

Brought to you by:
 _               _
| |             | |
| |__  _ __ ___ | |__   ___  ___ _ __ ___
| '_ \| '__/ _ \| '_ \ / _ \/ _ \ '__/ __|
| | | | | | (_) | |_) |  __/  __/ |  \__ \
|_| |_|_|  \___/|_.__/ \___|\___|_|  |___/

https://twitter.com/hrobeers
https://github.com/hrobeers

Unfortunately the current blockexplorers fail to correctly display this non-standard transaction, but you can verify it as follows:

getrawtransaction 3eace20c260a93865146f5d0761350e01079d9d933bbbbd0ed9dc52241ce261e

And decode the resulting hex string. (you might use http://string-functions.com/hex-string.aspx)

[size=14pt]Direct donation: PARSecHDJ2mLw3q18FExaxZcx6AQsWDzrP[/size]
[size=14pt]Peer4commit: [/size]
[size=14pt]Questions & help: https://peercoin.chat/channel/pars[/size]

[size=24pt]UPDATES[/size]

[size=18pt]PARS v0.5.4[/size]
If you are actively minting, please consider joining the PARS network. It allows innovation on our main chain!
Existing PARS minters, please upgrade to the latest version!
https://github.com/hrobeers/peercoin-advanced-relay

change log:

[ul][li]All non-standard redeem transactions for P2SH transactions are relayed. This is needed to spend smart contracts on our chain.[/li]
[li]The ‘getinfo’ rpc call shows the PARS version information e.g. “PARS:0.5.4(v0.5.4ppc-7-ge1946db-dirty)”[/li]
[li]Other peers can be identified as PARS nodes, so you can check how many PARS connections your node has.[/li]
[li]Blocks minted by PARS nodes are tagged, so that the effective PARS minting power can be monitored.[/li][/ul]

How does it work?
The current protocol allows any valid script to be included in the chain. However, it does only relay a limited set of standard transaction types. This means that non-standard transactions won’t be relayed by the network and have very little chance to make it into the chain.
This is where PARS steps in. PARS is a set of nodes that relay and mint more types of transactions. This means that every time a block is minted by a PARS node, the current set of non-standard transactions relayed in the PARS is flushed into the chain. The more minting power joins the PARS network, the faster we can get non-standard transactions in the chain.

PARS is operational today, not an empty promise.
Read a use case here: https://www.peercointalk.org/index.php?topic=4684.msg44265#msg44265

Why?
The beauty of peercoin is that you don’t need to control a mining pool to get a block in the chain. This allows for experimentation with the non-standard transaction types without massive investments and without compromising the security or stability of the main chain. This simply can’t be achieved on a pure PoW network without controlling a significant mining pool.

Security
The reason not all transactions are relayed is that the script system can be used to DoS attack the network. To be on the safe side, peercoin (just like bitcoin) whitelists a limited set of known trasaction types that are known to have no DoS vulnerabilities.
The PARS also uses whitelisting but will upon request enable non-standard transactions with only limited review. This allows for rapid development, but makes it more vulnerable to DoS attacks.
Since the PARS is a subnet of the peercoin network, only the PARS will be affected in case of such a DoS attack, but the peercoin network will just continue to operate as it doesn’t relay the DoS transaction.
DoS attacks on the PARS should be encouraged to show vulnerabilities in specific transaction types.

What it is not
The PARS is not a soft fork of Peercoin, nor does it try to replace the standard client. The PARS shall always obey the peercoin protocol, and should never control more minting power than needed for effective experimentation.

How does it benefit Peercoin?
As this concept is made possible due to the blessing of PoS, we can attract people exploring Bitcoin’s script system.
As txn types get explored in the PARS, we might consider accepting them in the reference client after in depth testing. This might convince new innovations to build on our chain instead of going back to their home chain.
The increased activity on our chain burns txn fees and therefore lowers our inflation. Welcoming experimentation can benefit our currency thanks to the genius of burned txn fees.
PARS can also allow things like smart contracts to be used on Peercoin’s chain.

How do I setup a PARS node?
Get the peercoin-advanced-relay client: https://github.com/hrobeers/peercoin-advanced-relay
Add the following to ppcoin.conf: “addnode=37.252.121.73:9901”
Start minting :slight_smile:

You can also check out this video tutorial…


#2

I hope this opens people’s eyes that there is no need to wait for protocol changes to start innovating.
Don’t be helpless and cry for new features while we’re not even using our current chain to the full extend.

So get your hands dirty and start innovating on this beautiful chain!


#3

Sounds interesting!

Though does there still needs to be some minimum “threshold” of clients minting and running this new code, in order for this new size limitation transaction to go thru with some meaningful probability?


#4

We were minting with two modest holders and this one got in in a few hours.

Don’t forget that this is experimental and serves to help innovation.
If solid use cases appear proposals will be made to merge specific transaction rules with the reference client after they proved themselves on PARS.

Innovation should drive the code and not the other way round like most seem to believe.


#5

Thanks for sharing! I think then it’s important to mention that only a few minters is sufficient for innovation. This will make it clear that Peercoin can function as a backbone and drive innovation at the clients without relying on messy pool voting.

Also, could you please share some instructions or links on how to compile this? It may be obvious to experts here, though us newcomers its not crystal clear.


#6

Just completed setting up a PARS node and will begin minting shortly.

This is a great initiative that encourages innovation, [member=32827]hrobeers[/member].
The ability to explore various transaction types that typically wouldn’t get accepted into blocks will bring some interesting experimentation to Peercoin’s chain.
I’m looking forward to working on and helping the advanced relay subnet gain momentum from not only our community, but the crypto-community as a whole.

Thank you for your work.


#7

…interesting 8)


#8

I’m happy you guys like it.

I’ve been trying to bring this message for a while, but no-one seemed to be picking it up.
So I figured that putting a large OP_RETURN on the chain would make my message clear.
And in the process of getting this OP_RETURN in, I came up with this concept.

At the moment this is just a proof-of-concept, I’m sure some documentation will get developed in the coming months.

[url=https://imgflip.com/i/18h3ln]


#9

Wow. This is cool. Great job and thank you.


#10

A PARS use case:

Imagine an asset trading project that needs a non-standard transaction (e.g. 300 byte OP_RETURN) for it’s asset creation transaction, and for all other transactions it uses standard transaction types.
As a first step, the project will ask the PARS project to enable this non-standard transaction. If the transaction is not enabled yet on PARS, it will be enabled quickly after a short review.
The project can now start it’s development and testing using the PARS for the asset creation transactions.
As a second step, the asset project will ask the PARS team to create a special client with only their non-standard transaction enabled (instead of the full PARS set). This client will then be distributed in the community for wider adoption.
Depending on the project’s support base and the PARS network strength, the asset create transaction will now have a reasonable confirmation time, while all other asset transactions are confirmed ASAP as these are standard transactions.
In a third phase, the asset project proposes a pull request to the reference client to include their transaction in the standard transaction list. As there is an operational use case for this change, the core team will have good reasons to take this request serious and most likely merges the changes in the reference client after a solid review.

This use case illustrates that the PARS enables more rapid development and innovation, and avoids premature changes to the reference client implementation.

Any similarities with the PeerAssets project are purely coincidental. :wink:


#11

ANNOUNCEMENT

The PARS project will be pulled by our dear friend [member=31975]saeveritt[/member].
This means that from now on, he’ll be the spokesperson of the project and I’ll be on the background maintaining the code for the PARS nodes.

This allows me to continue working on PeerKeeper with only little distraction.
And [member=31975]saeveritt[/member] has some good skills to give more body to this project.

Kind regards,
hrobeers


#12

PPC sent to PARS peer4commit. Great work.


#13

There seems to be somthing wrong with the peer4commit page. Did your payment get on the chain?
Do you see it on the PARS page?

If payment succeeded, but it’s not received, please open an issue here: https://github.com/sigmike/peer4commit/issues


#14

Here is an image from Polo history, no ID… I will probably have to email them to resolve the issue. Is there another address I can send to, I will send another donation.


#15

Thank you for your contribution, [member=32858]SLKRD[/member] :smiley: It’s very much appreciated.

[quote=“hrobeers, post:11, topic:4003”]ANNOUNCEMENT

The PARS project will be pulled by our dear friend [member=31975]saeveritt[/member].
This means that from now on, he’ll be the spokesperson of the project and I’ll be on the background maintaining the code for the PARS nodes.

This allows me to continue working on PeerKeeper with only little distraction.
And [member=31975]saeveritt[/member] has some good skills to give more body to this project.

Kind regards,
hrobeers[/quote]

Thank you for getting this project started and showing us that we are the drivers of innovation in the community. If we want to make changes we
have to take the necessary steps to show that these changes are valid and can benefit the network as a whole. The Peercoin Advanced Relay Subnet
is a great initiative to show the value and various use cases behind non-typical transaction types. I look forward to its continual development.


#16

This sounds like a great way to pre-test potential innovations before officially supporting them in the code. And it’s a big plus that this can be done much easier with Peercoin than any other PoW crypto like Bitcoin. That should encourage innovators to test things out on our network and hopefully stick with us in the end as they see it’s easier to get their innovations accepted into the protocol.

I was unfamiliar with all of this before your thread, so I was wondering what types of standard transactions there are that are already supported by the protocol, as well as other examples of non-standard transactions. Also, you say that certain types of transactions make it easier to DoS attack the network. Wouldn’t Peercoin’s fee prevent these DoS attacks from happening?

Edit: By the way, you should link to the Peer4commit project page in your initial post and encourage donations. It will be more likely that people will donate if the donation page is easily accessible, rather than forcing everyone to go and search for the project on Peer4commit. The same goes with any other project listed in this section.


#17

It’s important to note that PARS doesn’t change the protocol, only the relay rules. To experiment with protocol changes, a testnet is needed.
PARS allows non-standard output scripts to be relayed and minted in the chain.
Since P2SH is a standard output, a non-standard redemption script can still be relayed by including only it’s hash in a P2SH output. So most non-standard use cases will work without PARS today.
However, some transactions might want to have their non-standard output script in the unspent transaction (>80 byte OP_RETURN or a transaction puzzle) and this is where PARS steps in.

I have to admit that I don’t know any use case other than mentioned above that isn’t covered by the standard P2SH output (this is still to be explored further).
But I hope I proved that more can be done today, without protocol changes, than most people believe. I’ll provide some more advanced proof in the future.

Here you find a list of standard transactions: https://bitcoin.org/en/developer-guide#standard-transactions
On this page under “Denial of Service (DoS) attacks > point 20” you find the source for the DoS claim (I’m ot aware of an example): https://en.bitcoin.it/wiki/Weaknesses

Will do, thanks


#18

My PARS node got stuck at block 251687.
I got my node back on track, but you might want to check yours too.

Not sure how come.


#19

[quote=“hrobeers, post:18, topic:4003”]My PARS node got stuck at block 251687.
I got my node back on track, but you might want to check yours too.

Not sure how come.[/quote]

strange…mine’s still going just fine :shrug:

my ethereum wallet got stuck on a random block yesterday…had to re-download the chain to get it moving again :stuck_out_tongue:


#20

I probably got stuck in the same block as poloniex did.
So we can conclude that it is not caused by the PARS client :slight_smile:

I have multiple clients, so I just copy the DB of a correct one, no redownload needed :slight_smile: