Steem 0.5.0 Release Candidate

in steem •  9 years ago  (edited)

The latest release of Steem includes several changes to the protocol that will break compatibility with existing full nodes. All witnesses, miners, exchanges, and other full nodes will have until May 31st at 17:00:00 UTC (1:00 PM EDT) to upgrade their client.

We do not expect any changes, but would like the community to review the Release Candidate before we upgrade it to a full release.

Major Changes

  1. Witness Version Reporting
  2. Hard Fork Voting by Witnesses
  3. Comment Deletion Operation
  4. Permlinks can contain any UTF-8 character
  5. Allowing Vote Changes
  6. Custom JSON Operations

Minor Changes

  1. Creating a comment requires a title, body, or meta data
  2. Existing soft forks (producer enforced) are now hard forks.
  3. Updating vesting withdraw rate to be 0 when it already is 0 is forbidden

Witness Version Reporting

This change involves adding a header to the first block produced by a witness after changing their code. It is automatic. This information can be used to gather important statistics about what version the various block producers are running. This is particularly important for debugging unintentional forks. There is no means to verify the truth of the reported value, but we can safely say that anyone not running the version they report will hard fork from the network if they produce an invalid block.

Hard Fork Voting

The art of hard forking is ensuring that the majority of the network has upgraded their nodes prior to changing the validation logic. Historically a hard fork would occur based upon a block number or time placed in the code. Old nodes would not know about the hard fork and could inadvertently start a minority chain.

Under the new model, the concept of a fork is known to all nodes. Witnesses publish the hard fork version number and the time at which it should take effect in their block header. This is published automatically when they update their code and produce a block with a version different than the last version published to the chain.

The hard fork takes effect at the scheduled time if and only if 15 out of 21 active witnesses are on the same hard fork and time. Any witness (or miner) running old code will automatically stop producing blocks if the consensus hard fork number and time is not known to them.

Future hard forks can be scheduled more aggressively and without fear of leaving the network forked due to old nodes continuing to run and propagate an alternative chain. Any exchange that does not upgrade will see their node shutdown automatically when the hard fork takes effect.

Comment Deletion

After the hard fork it will be possible to delete any comment that has no replies and no pending payout. The comment will still exist on the blockchain, but the permlink will can be reused and it will not show up on steemit.com.

Changing Votes

It became quite apparent that vote changes will be a necessary feature. Originally votes could not be changed because it would open up games that would undermine the anti-abuse measures we had in place.

After much discussion internally and with some members of the community we have decided to allow users to change their votes! There are a few caveats to this to prevent attacks and to minimize potential abuse of this change, but we strongly believe this change will allow for a higher level of curation and reduce cognitive barriers for content curation. Below is a summary of how we are changing voting:

  • Behavior for new votes remains unchanged.

  • As a general rule of thumb, you can change your vote. The only restriction to this is that you cannot change your vote within the last two hours of a payout if the change would increase the comment payout. This is prevent ninja buffing of a comment at the last second. More on this restriction later...

  • If you change your vote you become ineligible for curation rewards, even on a revote. The idea behind curation rewards is to create incentive for user powered content discovery. Changing votes later does very little to push this agenda, thus those users will be ineligible for curation rewards.

  • Changing your vote still costs voting power. You do not get a refund for lowering your vote, do not pass go, do not collect $200. The user will need to be mindful of this fact because changing a vote that had a lot of voting power with one that is low voting power, even if the weight is higher, might result in fewer rewards awarded to the comment.

  • When a vote is removed, the cash out time of the comment is unchanged. The cash out time is a contract between the blockchain and the users that a comment will not be paid before a certain time so that peers can review and potentially down vote abuse. This behavior is necessary to enforce this contract.

  • This should be trivially assumed, but author rewards for a comment are modified as though the previous vote never occurred. Other curators may see an increase in their rewards as your rewards are redistributed to them.

  • “Absolute rshares” are not changed prior to applying a new vote. This has the effect that vote changing does extend cash out time, but not as significantly as the first vote. We believe this is important to allow new and current voters to accurately curate content as the pending payout fluctuates.

  • To prevent certain kinds of abuse, you may only change your vote 5 times.

  • In the last two hours before a payout, changing your vote in a way that increases the reward of a comment is prohibited. New votes are still allowed as normal. This stipulation prevents a comment from being pumped in a short amount of time without extending the cash out time significantly. This is acceptable for normal voting because a large vote causes a large extension to the cash out time. However, since we do not remove absolute rshares, the extension will be smaller and smaller over time, to the point where users could pump a comment right before the cashout time without having an appreciable effect on the cashout time, effectively creating a review period of 0 seconds. We understand that this change could create an effective review period of 2 hours, but we believe it will be enough of a deterrent to prevent this sort of gaming. Keep in mind that changing a vote that causes a loss in net rshares is still allowed, so there are two hours where votes could be removed or changed to a 100% downvote entirely when the users wishing to game the system could do nothing.

Custom JSON Operations

This is a new operation type that allows user defined data to be published to the blockchain. The data specifies the accounts and authority level (owner,active,posting) that must approve the transaction to be included. Each custom op has a name and a field containing arbitrary JSON data.

This operation is similar to the existing custom operation with three critical improvements:

  • it is possible to specify a posting authority
  • names are used rather than integer ids which provides natural namespacing
  • the data must be valid JSON which means it remains human readable and can be extended or interpreted by 3rd party software without having to know the specifics of your custom operation.

Custom operations are how services such as Steemit can implement features such as “following”, “moderation”, and other features that do not require changes in currency validation logic.

Permlink’s can be arbitrary UTF-8

This will allow more options for supporting many different languages.

You can find the latest source code and releases here:

Signed Release

Release Commit Hash: ae6d87cc00b685aadaa027745d25e4b59af7c190

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Very cool news about opcodes!
When releases will be provided with builds? Do you have some ETA?

About vote changing I think it would work better like this:

"As we know after 4 July the payouts will happen about 24 hours after voting… What make sense to me is that the vote should be time % weighted… If I vote now and I take my vote back after 1 minute 100% of my vote power should be taken back(it could be even be a miss-click)…If I do it after 12 hours then 50% should be taken back, if I take it back 1 hour before cashout only about 4% voting power should taken back (1/24)… What do you think?"

shooot...I downvoted by accident.

  ·  9 years ago (edited)

try to compile the code of steem, but got some errors during cmaking. Any suggestion would be really appreciated:
"-- Finished fc module configuration...
CONFIGURED FOR STEEM NETWORK
CONFIGURED FOR FULL NODE
-- Configuring incomplete, errors occurred!
See also "/home/harvey/steem/CMakeFiles/CMakeOutput.log"."

in the CMakeOutput.log file:
" remove lib [gcc_s]
remove lib [gcc]
remove lib [gcc_s]
remove lib [gcc]
collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/4.9] ==> [/usr/lib/gcc/x86_64-linux-gnu/4.9]
collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/4.9/../../../../lib] ==> [/usr/lib]
collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu]
collapse library dir [/lib/../lib] ==> [/lib]
collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
collapse library dir [/usr/lib/../lib] ==> [/usr/lib]
collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/4.9/../../..] ==> [/usr/lib]
implicit libs: [stdc++;m;c]
implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/4.9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib]
implicit fwks: []"

have no idea what this project do

I can't build v0.5.0
/root/steem/libraries/chain/steem_evaluator.cpp:6:30: fatal error: diff_match_patch.h: No such file or directory

me too

git submodule update --init --recursive

good work...thanks

  ·  9 years ago (edited)

Having real trouble getting my miners back running... updated before the fork and was running fine.
After fork they were all stuck not moving.
Reinstalled and now only one is running, the others are stuck...
Going to reinstall for the 3rd time :(

3287384ms th_a       witness.cpp:419               on_applied_block     ] hash rate: 1 hps  target: 28 queue: 96 estimated time to produce: 4473924 minutes
3287419ms th_a       witness.cpp:419               on_applied_block     ] hash rate: 1 hps  target: 28 queue: 96 estimated time to produce: 4473924 minutes
3287445ms th_a       witness.cpp:419               on_applied_block     ] hash rate: 1 hps  target: 28 queue: 96 estimated time to produce: 4473924 minutes
3287474ms th_a       witness.cpp:419               on_applied_block     ] hash rate: 1 hps  target: 27 queue: 95 estimated time to produce: 2236962 minutes
2900065ms ntp        ntp.cpp:177                   read_loop            ] ntp_delta_time updated to 5327 us
2900337ms ntp        ntp.cpp:177                   read_loop            ] ntp_delta_time updated to 9812 us
3200651ms ntp        ntp.cpp:177                   read_loop            ] ntp_delta_time updated to 2064 us
3201224ms ntp        ntp.cpp:177                   read_loop            ] ntp_delta_time updated to 174 us
3201685ms ntp        ntp.cpp:177                   read_loop            ] ntp_delta_time updated to -3623 us