so, our update to the gsoil platform takes us from ver 1.3.3 of Go up to ver 1.3.5
this brings us into the
Ethereum Homestead Protocols.
a number of changes are made to our platform with these changes, which were introduced to the Ethereum mainnet after much testing. ill try to be brief about them, but want to describe some of how they change our ecosystem....
for the Homestead release, two major changes are introduced:
EIP#7: EVM opcode DELEGATECALL has been introduced at 0xf4. similar in idea to CALLCODE, except that it "propagates the sender and value from the parent scope to the child scope", making it more straightforward for a contract to store another address as a mutable source of code and ''pass through'' calls to it, as the child code would execute essentially the same but with reduced gas costs. this will make reusable standard libraries more accessible and operational.
EIP#2:
Consensus rules changes-the gas cost for deploying contracts via a transaction is increased from 21000 to 53000 (0.00103000 SOIL)
-block difficulty adjustment algorithm has changed to
block_diff = parent_diff + parent_diff // 2048 * max(1 - (block_timestamp - parent_timestamp) // 10, -99) + int(2**((block.number // 100000) - 2))
or basically, if blocktimes over the last 2 blocks are < 10 seconds, the difficulty is increased by
parent_diff // 2048 * 1. if they are winthing the 11-19 second range, difficulty will remain unchanged. if blocktimes are > 10 seconds, the difficulty is lowered proportional to the timestamp difference, from
parent_diff // 2048 * -1 to a max downward adjustment of
parent_diff // 2048 * -99 The cap of -99 simply serves to ensure that the difficulty does not fall extremely far if two blocks happen to be very far apart in time due to a client security bug or other black-swan issue, but the promotion behind this algorithm was an eventual mathematecal impossibility of block times exceeding 24 seconds.
the second part of the algorithm
int(2**((block.number // 100000) - 2)) is the so-called "difficulty bomb". which increases, exponentially, the average difficulty for mining a block every 100,000 blocks. this was put in place essentially as a motivation to push the network towards a Proof of Stake consensus engine.
according to the documentation for the Homestead release this change guarantees to keep block time in the 10-20 range, which has been a problem for SOILcoin when the network is hit with a mining farm. the previous difficulty adjustment was very vigorous in increasing difficulty to respond to increases of hashing power on the system, but was GLACIALLY slow in decreasing block difficulty.
i think this is one of the most important changes to our protocols, while we work our code up towards compatibility with the UBQ Flux Difficulty Algorithm which looks further back in the chain to ensure a more rapid response to hashrate dynamics. this should set our block times roughly in sync with the Ethereum networks block times,
*
On chain version update notificationsMuch like Ethereum, we have deployed an oracle contract to the network which holds the current version of gSOIL with the release hash. Its goal is to allow gSOIL to check for new releases automatically without the need to consult a central repository. It currently recognizes ver 1.3.3 as the most uptodate client, and this will be updated (manually) with each new protocol release (i.e. at block #2,000,000 our version will be set to 1.3.5 and at block #2,000,100 our version number will be set at 1.4.4, although this is NOT ver 1.4.4 per the Ethereum releases). This contract will emit a notice informing you if there's a new client available.
New releases will be signed off by 1 current signer (@abvhiael) to be accepted by the oracle and users be notified of the client version change. I would prefer, in the interest of decentralization, to promote two further signatories to this contract, and to make it a 2-of-3 signature condition for published notices. Please contact me if you want to be added to this.
NOTE, this contract does not push any automatic upgrades to your gsoil cient, it only displays a small CLI notification to the user when an update to the client is available.
This contract is live on the SOILnet at 0x17080970C7A6beBa2AFB95c7985B975cAF3fF33C.
The full contract ABI is available on my github page:
https://gist.github.com/abvhiael/9b14842d38e5ed3637f3518507c12882And a reduced ABI that just contains the list of signers and the current release version is also available:
https://gist.github.com/abvhiael/bfa42bd5b9a4a6aba9fc29b98c8a5e12marty is working step by step in upgrading our protocols towards where Ethereum's platform is at today, and there are many changes in the works with those protocol changes. marty is doing a fantastic job with these changes and hopefully the community will reward him for his efforts as he brings us closer to being up-to-date with Ethereum (currently at ver 1.5.9)
im off to watch the hockey game and then ill do a write up on changes to our SOILsafe GUI wallet and development tool.