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
- Witness Version Reporting
- Hard Fork Voting by Witnesses
- Comment Deletion Operation
- Permlinks can contain any UTF-8 character
- Allowing Vote Changes
- Custom JSON Operations
Minor Changes
- Creating a comment requires a title, body, or meta data
- Existing soft forks (producer enforced) are now hard forks.
- 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
Very cool news about opcodes!
When releases will be provided with builds? Do you have some ETA?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
About vote changing I think it would work better like this:
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
shooot...I downvoted by accident.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
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: []"
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
have no idea what this project do
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
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
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
me too
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
git submodule update --init --recursive
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
good work...thanks
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
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 :(
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit