Pages:
Author

Topic: 🌱[ANN] SOIL | Environmental | Agriculture | Smart Contracts | Sustainable - page 29. (Read 237606 times)

legendary
Activity: 902
Merit: 1001
Free trial of #AltFolio = save time, react faster
altsheets will you update your explorer node? Since stats and pool is linked on yours?

I can try today. IF the codebase is 100% reliable. Which one do I choose?

Was busy before. Sorry again.


Anyone's gonna SELL me some coins?
--> msg18798676
--> msg18695602

--> WTB/WTS thread

?

Thx.
legendary
Activity: 902
Merit: 1001
Free trial of #AltFolio = save time, react faster
... documenting ...

wow, great stuff.

Really looking forward to reading all this.
member
Activity: 82
Merit: 10
Auxiliary Soil Developer
Soil Windows Mining Guide

Download the mining package and extract it
https://github.com/Soilcoin/Soilcoin-Windows-mining/releases/download/0.1/soil-mining-windows.zip
Download ethminer and extract the files to soil-mining-windows/ethminer
https://github.com/Genoil/cpp-ethereum/raw/master/releases/ethminer-0.9.41-genoil-1.1.7.zip

If you don't have already a soil address - generate one
gsoil/gsoil-new-account.bat

Solo mining
soil-mining-windows/gsoil-solomine.bat
+
For nvidia gpus
ethminer/solo-mining-cuda.bat
For amd gpus
ethminer/solo-mining-ocl.bat

Pool mining
ethminer/miners-zone-cuda.bat
ethminer/miners-zone-ocl.bat
ethminer/pool.sexy-cuda.bat
ethminer/pool.sexy-ocl.bat

Choose cuda for nvidia gpus and ocl for amd gpus and the pool of your choice.
Open the bat file with an editor and enter your address and rig name.
http://pool:port/0x663682fd2d96064fdb2f152a56bab75d921065c0/marty

Happy mining!
hero member
Activity: 722
Merit: 501
hopefully the final day of simply documenting the improvements and adjustments to the SOILnet taking effect with our scheduled hard forks in the new gsoil client release....

*gsoil will include a built-in netstats reporter with the ability to register a user node on the service simply thru the console. The ultimate goal would be to have the SOILcoin network intelligence tool return its report via a swarm-hosted page on the SOILnet, presently we will be able to take advantage of the service offered by miners-zone in correlation to their SOILcoin mining pool accessible at http://soil.miners-zone.net:9090/.  

Usage:
Code:
--ethstats ":@soil.miners-zone.net:9090"

In case we had not covered this information previously, this page presents an overview of the current state of the SOILcoin blockchain. Although it is generally self-explanatory, for the sake of novices attending the page for the first time, the items represented are:
Quote
~Best Block : the highest block number of the longest valid chain.
~Uncles : are orphaned blocks, (i.e: not the canonical winning block) although with the reward and incentives system present on etheria-protocol blockchains, mined uncles are rewarded with a fractional block reward minting (7/8ths of a normal block reward) and included for reference in the blockchain. This stat hows the current block's uncle count and the uncle count of last 50 blocks.
~Last Block : shows the time since the last block was mined, usually in seconds.
~Average Block Time : the average time between two blocks, excluding uncles, in seconds. *with present difficulty adjustments, this should generally remain between 13 and 18 seconds.
~Average Network Hashrate : the number of hashes directed towards the network by stats-registered miners working to solve the current block.
~Difficulty: the current difficulty to solve the algorithmic problem required to mine a new block. The difficulty is just an arbitrary value, it has no unit. As an example, a block with a difficulty of 8 is 8 times more difficult than a difficulty 1 block.
~Active Nodes : the number of connected nodes to the SOILcoin network intelligence dashboard (not the number of nodes connedctied to the whole of the SOILnet)
~Gas Price : the price miners accept for gas costs while including a transaction within a block. Gas is used to calculate fees across the SOILnet for operations, with 50 gwei as the current default (0.00000005 SOIL).
~Gas Limit : the block gas limit. This defaults 4,712,388 gas, thus each block can include transactions until the gas limit is met filling the block. This function is analgous to BTC's block size limit which is making news regarding the split between BTC-Unlilmited and SegWit strategies, but this function on SOILcoin is not fixed in size.
~ Page Latency and Uptime are specific stats for the dashboard.
~Block Time : shows the actual time taken to solve the last 40 blocks.
~Difficulty Chart : shows the actual difficulty of the last 40 blocks. This graph is an easy way to see how the difficulty adjustment algorithm works to maintain a stable block time compared to immediate differences in network hash states.
~Block Propagation Chart : shows how fast blocks are shared among the nodes connected to the dashboard. Generally approximately 60% of connected nodes receive propogated new blocks within a quarter second, with whole network propogation coming in around 1.25 seconds.
~Last Block Miners are the public keys of the miners who found most of the last blocks. More often than not this will be a mining pool's address.
~Uncle Count Chart shows numbers of uncles per 25 blocks per bar. As mentioned above, uncles mined pay 7/8 of the normal block reward.
~Transactions Chart shows numbers of transactions included in last blocks.
~Gas Spending Chart shows how much gas was spent on transactions in each block, note the correlation to the transactions chart. (Miners receive these gas fees on top of their block reward.)
~Gas Limit Chart shows the dynamically adjusted block gas limit for each block.
And below you see details of nodes connected to the network stats page you are viewing.

*WHISPER : with implementation the second scheduled fork in the new gsoil client, the Whisper V5 protocols will be more enabled on teh SOILcoin blockchain. The Whisper Mail server package will be included in the go-soil distributions under cmd/wnode/main.go. While a full on user-manual will hopefully be prepared for SOILcoin before this fork takes place, this is at least a good time to bring up what Whisper means to the evolution of the SOILnet in general.

Whisper is designed to run as a built-in, network-level identity-based on-chain messaging system, peer-to-peer or contract-to-contract; using the underlying devp2p Wire Protocol. It is designed for simple and efficient message broadcasting, and for asynchronous communications. Using Whisper with the most secure options, this protocol can theoretically deliver "full darkness" to messaging, that  is pure anonymity regarding sender, location, etc. This level of privacy is set to be configurable.

All Whisper messages are encrypted, then sent via the devp2p protocol, which in turn uses its own encryption on top of Whisper encryption. These are placed in Envelopers, which contain the encrypted payload and some metadata in plaintext format necessary for the decryption. Envelopes are transmitted as RLP-encoded structures of the following format:

[ Version, Expiry, TTL, Topic, AESNonce, Data, EnvNonce ]

Quote
Version: up to 4 bytes, indicates encryption method. If Version is higher than current on the node, the envelope cannot be decrypted, and therefore will be only forwarded to available Whisper node peers.
Expiry time: 4 bytes (UNIX time in seconds).
TTL: 4 bytes (time-to-live in seconds).
Topic: 4 bytes of arbitrary data.
AESNonce: 12 bytes of random data (only present in case of symmetric encryption).
Data: byte array of arbitrary size (contains encrypted message).
EnvNonce: 8 bytes of arbitrary data (used for PoW calculation).

Messages can be decrypted by anyone who possesses the corresponding key. Every Whisper node may possess multiple symmetric and asymmetric keys, and upon Envelope receipt, the node will attempt to decrypt it with each of the keys, depending on Envelope's encryption mode. In the case of successful decryption, the plain message is passed to the corresponding dApp.

Whisper nodes have zero knowledge regarding the contents of Envelopes to which they cannot decrypt. Whisper nodes simply pass Envelopes around regardless of their ability to decrypt the message.

The purpose of PoW within the Whisper protocol is to prevent spam, which can be used as a DDOS attack vector; but also serves to reduce  the computational burden of Whisper interactions on the network. The cost of Whisper PoW can be regarded as the price paid for allocated resources if  the network is to store an Envelope for a specific time (TTL).  PoW for Whisper is designed to  be proportional to both message size and TTL.

In the current versioning of Whisper, PoW is defined as average number of iterations, required to find the current BestBit (the number of leading zero bits in the hash), divided by message size and TTL:

PoW = (2^BestBit) / (size * TTL)

Composing an Envelope from a basic payload, is designed to be accomplished in a few steps:

1.Compose the Envelope data (concatenating the relevant flag byte, padding, payload (randomly generated or provided by user), and an optional signature)
2.Encrypt the data symmetrically or asymmetrically.
3.Add a Topic.
4.Set the Time To Live attribute.
5.Set the expiry as the present Unix time plus TTL.
6.Set the nonce which provides the best PoW.

Expired messages cannot be resent via the normal Whisper channels, as they will be rejected and the peer punished. Thus, a Mail Server can be run, which would store all the messages, and resend them at the request of the known nodes through peer-to-peer communication with the node. The Mail Server can resend the expired messages directly to the recipient node, consuming the messages and no longer forwarding them any further along.

**we have a decent amount of time before both SWARM and WHISPER are fully integrated onto the SOILnet, and i will be certain to work with these two new cornerstones to our functionality to make them as user friendly and understandable as possible as they roll out into the main code as scheduled in the newest gsoil release. these are major milestones in the codebase for SOILcoin, and help us to really begin looking at the next generation dApps and content providing that will be available via the SOILcoin network.

there are only a few other releases worth of feature additions and adjustments to really document regarding these scheduled forks, hopefully i can finish this today and try to finish up what id started writing over the last week regarding Casper vs Ouroboros and the future of Proof of Stake on SOILcoin.

hero member
Activity: 722
Merit: 501
further documentation of changes to the underlying SOILcoin protocols and Go-OS initialized by the upcoming hard forks, bringing our code base to near congruence with Ethereum's operational ability:

via the 1.5.0 release of go-ethereum:

*Changes to the RPC API*

The behavior of eth_sign is changed. It now accepts an arbitrary message, prepends a known message ["\x19Ethereum Signed Message:\n" + len(message)], hashes the result using keccak256, and then calculates the signature of the hash (breaking backwards compatibility). By adding a prefix to the message, this makes the calculated signature recognizable as an Ethereum-ecosystem specific signature. This prevents misuse where a malicious DApp can sign arbitrary data (e.g. transaction) and use the signature to impersonate the victim.

Added RPC calls related to this function include personal_sign, which functions similarly to eth_sign but also accepts a password; and personal_recover, which returns the address of the account that created the signature.

usage:
personal_recover(message, signature)
personal_sign(hash, address [, password])

Further, other added RPC functions are:
personal_importRawKey : import an unencrypted private key via RPC.
eth_getRawTransaction : returns the RLP encoding of a transaction.

debug_traceTransaction : run a transaction via debugging in the exact same manner as it was executed on the network. Alongside the  transaction hash, optional secondary arguments can be specified:

disableStorage: BOOL. Setting this to true will disable storage capture (default = false).
disableMemory: BOOL. Setting this to true will disable memory capture (default = false).
disableStack: BOOL. Setting this to true will disable stack capture (default = false).
fullStorage: BOOL. Setting this to true will return you, for each opcode, the full storage. This is a slow process. (default = false)

tracer: STRING. Setting this will enable JavaScript-based transaction tracing. If set, the previous four options will be ignored. JavaScript-based tracing enables the user to evaluate an object with (at least) two methods, named step and result. Step is a function that takes two arguments, log and db, which are called for each step of the EVM, as the specified transaction is traced.

The log contains the following fields:

pc: Number, the current program counter
op: Object, an OpCode object representing the current opcode
gas: Number, the amount of gas remaining
gasPrice: Number, the cost in wei of each unit of gas
memory: Object, a structure representing the contract's memory space
stack: array[big.Int], the EVM execution stack
depth: The execution depth
account: The address of the account executing the current operation
err: If an error occured, information about the error

db has the following methods:

getBalance(address) - returns a big.Int with the specified account's balance
getNonce(address) - returns a Number with the specified account's nonce
getCode(address) - returns a byte slice with the code for the specified account
getState(address, hash) - returns the state value for the specified account and the specified hash
exists(address) - returns true if the specified address exists

timeout: STRING. Overrides the default timeout of 5 seconds for JavaScript-based tracing calls. Optional string values are discussed at length in the go language documentation at https://golang.org/pkg/time/#ParseDuration

USAGE:
Go:            debug.TraceTransaction(txHash common.Hash, logger *vm.LogConfig) (*ExecutionResurt, error)
Console:    debug.traceTransaction(txHash, [options])
RPC:        {"method": "debug_traceTransaction", "params": [txHash, {}]}

Features added into the 1.5.0 (Let There Be Light) release, but flagged as "experimental" but show the sorts of functions that are being added into the performance of the SOILnet EVM which will allow us to build bigger and better applications going forward. Naturally we will maintain observation of code-releases from Ethereum Core, and when these features are stablized we will document them further, but as of yet, I havent had the chance to test them on the SOILnet, it is simply nice to know that these attributes are becoming available. Typical caeat... use these features at your own risk.

*gsoil will be enabled to run in Light Client mode with the --light flag. Light client mode syncs recent block headers and fetches state values on demand. NOTE: light client servers will need to be first made available. Users can set up as a light-client server using the --lightserv flag. A light server is a full node with "LES server" option enabled. i.e:

Code:
gsoil --lightserv 25 
allocates 25% of CPU power towards providing a Light Client Server

The purpose of the Light Ethereum Subprotocol (LES) protocol is to allow users in low-capacity environments (embedded "smart property" environments [eg: an object which hosts an externally-owned account or a contract account], IoT enabled devices, smartphones, browser extensions, older desktop computers and laptops, etc) to maintain high-security assurances regarding the current state of user-defined part of the SOILnet state or to verify the execution of transactions and smart contract operations. Light Clients do not run a full node, but can receive data from the network.

Light Clients will be able to perform many operations: requests regarding the state of an account (nonce, balance, code or storage index), requests regarding transaction confirmations (within  consumer-merchant scenarios), request block validations or set to watch for and log blockchain events, which is useful where a dApp needs to keep track of certain events that are nt part of the permanent state of the platform but need to be verifiable in an efficient manner, such as a decentralized exchange logging trades or internal wallet transactions.

Light Clients will also make cross-chain inter-operability much more feasible. As SOILcoin maintains a Bitcoin Light Client in the operation of the BTCrelay application, which allows a SOILnet resident smart contract to request verification of transactions occuring on the BTC blockchain to enable state changes (value transactions) on the SOILcoin blockchain, a SOILcoin Light Client may make it easier for other currencies to also build relays to SOILcoin, especially alt-etherea Dagger based currencies.

There are limitations to what the light client can do presently. The only pending transactions a light client knows about are the ones that have been created and sent from that client. Likewise, locally created transactions can only be found by searching for it's hash.  Finding other transactions is a bit trickier. Searching for events (transactions) in a long blockchain history will take an extremely long timeas searches are only performed in individual headers, rather than using a MIP-mapped filter as full clients use to search, in a faster and cheaper manner.

The advantages of Light Clients is that they take up far less disk space to maintain their database, allowing it the ability to sync in minutes, but nonetheless fully interacts with the SOILcoin blockchain, and is usable through the DUST browser for SOILsafe.
 
*The Swarm daemon (bzzd) and associated helper tools are included with the latest go-soil builds and are somewhat functional. SWARM is the EVM protocol designed for decentralized file storage. The release included with go-soil is considered a Proof-of-Concept implementation of the Swarm protocol. It is included as a separate daemon process (and inherently executable binary), not embedded inside gsoil.

The objective of Swarm is to provide a decentralized store of and distribution channel for dApp code and data as well as other user defined data. Participants will be able to efficiently pool storage and bandwidth resources to provide these as services to other participants as an on-chain P2P data-storage and data-serving protocol that is DDOS-resistant, and which thanks to the underlying SOILcoin blockchain, maintains "zero-downtime" (data delivery would be based upon average block times),  and is designed to be self-sustaining with a built-in incentivization system which leverages p2p accounting, permitting the exchange of resources (storage space, bandwidth) for payment.

Swarm will, as a native base layer of the SOILcoin web three stack, continue to evolve its services and implementations, and dApps are already appearing to leverage this technology: album - a photo album dapp with a set of public-domain photographs that lets users upload their own photos; and filemanager - a GUI explorer for file collections hosted on the swarm.

Swarm is designed to deeply integrate with the devp2p multiprotocol network layer of SOILcoin, as an alt-etherea currency, as well as with the SOILcoin blockchain for application services (domain name registration, payments for services, etc). Naturally, as this is rolled onto the SOILcoin network and tested, we will endeavor to provide much more in-depth documentation regarding its usage, and how to set up Swarm clients for both sides of the economic model, as well as ensure swarm-dApps a

Ive followed the Swarm project as it has moved towards implementation within go-ethereum, and this will be one of the projects getting a lot of my attention over the next few months as its integration onto the network layer of SOILcoin becomes hardcoded. The project is running smoothly on the Ethereum blockchain, and is actually hosting its own homepage, at:
http://swarm-gateways.net/bzz:/1b5d887cea699d18560ae6dcaf06676f5064f630978b8031d9beb6fbddd82a82

SWARM was touted as one of the three cornerstones to the EVM, and as you can see, can also be used to deliver a decentralized web via serverless content hosting, with support for browsing directly integrated within the DUST wallet for SOILsafe when we follow ETH into Metropolis. There is a TON of documentation for swarm, and thatll definitely have to be another day.

*Whisper v5 PoC code is included in the repository, but not enabled yet. Whisper protocols will enable not only users to communicate with each other, but for contracts to communicate with other contracts. Whisper is considered the third cornerstone to a decentralized internet, and has many use cases: a decentralized exchange dApp may use Whisper to broadcast an offer to sell an asset at a specific rate, and could advertise this for a set amount of time, from several minutes minutes to days. Some dAppswill require signals from eachother in order to ultimately collaborate on a transaction. Whisper can be used to build chat-rooms, or to provide "dark communications" between two parties that have no knowledge of eachother beyond a hash, with source and destination hidden from both parties, and may also leverage Swarm for file transfers initiated from Whisper chats.

As with Swarm, there is a ton of documentation for the usage of Whisper, and as it is made more available for usage, we will endeavour to provide those sorts of guides for both Whisper and Swarm on go-soil. The Whisper overview on the Ethereum wiki is a good place to start to understand how to interact with Whisper (https://github.com/ethereum/wiki/wiki/Whisper-Overview) but we'll try to include this sort of information when Whisper implementation is fully realized.

*go-ethereum is able to be used as a library in Android (Java) and iOS (ObjC/Swift) projects with the 1.5.0 code release. abigen, discussed in a previous post, has gained preliminary support for creating Java bindings to EVM-level smart contracts. this may make running full node or light clients on Android and iOS devices much more attainable, and again, opens up interactivity for building projects such as the DUST wallet for SOILsafe on a smart phone, allowing for dApp interaction, file storage and service thru Swarm or anonymous messaging thru Whisper.

essentially a lot of the changes reflected in the newer code changes to Ethereum which we are upgrading SOILcoin to are providing the architecture needed to begin building those sorts of distributed applications for the industries we indentified as underserved and most likely to benefit from the sort of decentralized services our blockchain will be able to offer at a exponentially smaller cost than current models of cloud service delivery, or virtual hosting needs.

capitalizing on these advantages over the next few years will be what sets SOILcoin aside from other projects, and these evolutionary adjustments to what we can offer brings the IDEA of what the SOILnet can offer more than a few steps closer. theres a lot of work to be done, but every step made makes the SOILnet that much more accessible and readily available, even to users who wont even realize they are interacting with it (decentralized webpages), which is the ultimate idea behind a decentralized web.

more to come, as ETH wasnt done improving their codebase, and those changes reflect to how the SOILnet operates, and what it is capable of. honestly, the tools we are making available EXCITE me, almost as much as when hearing about Ethereum for the first time somewhere near two years ago and getting involved on their test-net. this project has for a long time been about the possibilities of what we will be able to create and offer, and i knew early on that it would take time for the underlying infrastructure to catch up with the ideas that were floating around my brain. we're getting there now, we're approaching that point where EVERYTHING changes, where this technology finally disrupts every industry, and with SOILcoin focused on delivering applications that will ultimately serve to make this planet not only more efficient, but healthier and greener, we stand on the precipice of an age where every one of us can make a difference, where true collaboration without censorship can be achieved.

ive always been a somewhat utopian thinker, and realized early that blockchain technology.. extraspecially the EVM.. was going to be the game changer that alters society, and that adoption of these sorts of technology is a very exponential curve, we're still... 18 months after the genesis of the SOILnet... at the base of this curve, and we're still alive and... well... BLOCKING. i think we are better prepared to ride this wave than a lot of other alt-etheria, more so because i believe we have a better vision towards the scale of how big this can get, in a practical sense. hopefully with these sorts of changes, we can position ourselves to make some noise in the crypto world finally....
hero member
Activity: 722
Merit: 501
updates to the go-soil protocols thru the upcoming hard fork that will bring us to near-congruency with the codebase offered thru ETH. (documenting upstream from changes introduced via go-ethereum 1.4.11 (Minor Text Fixes) thru

A new build script, ci.go, was released to replace some of the older shell scripts, and can compile go-soil, run the tests and create release archives as well as debian source packages. The ci command is named from "Continuous Integration" scripts. The idea put forth is for Ubuntu packages is to run ci.go alongside the buildbot-based PPA uploads. This is meant to streamline build processes of different code changes to the core system, both soft and hard fork types.

Usage:
Code:
go run ci.go  

the available commands are:
 install    [ packages... ]                                  -- builds packages and executables
 test       [ -coverage ] [ -vet ] [ packages... ]   -- runs the tests
 archive    [ -type zip|tar ]                               -- archives build artefacts
 importkeys                                                    -- imports signing keys from env
 debsrc     [ -sign key-id ] [ -upload dest ]        -- creates a debian source package

Several security fixes were set up, generally in response to different DOS attacks that Ethereum, and other Dagger parallel currencies experienced at the time, generally finding that certain opcodes that read the state tree were under-priced in gas costs relative to other opcodes. These were used with recursive attack vectors to degrade network performance via transaction spam. Gas costs were significantly raised for EXTCODESIZE, EXTCODECOPY, CALL, CALLDELEGATE, CALLCODE which makes DOS attacks geared towards system computational degradation through "transaction spam" generally more costly than would be worth the possible damage. Replay attack protection was instituted to prevent transactions from a forked chain (eg ETH forked from ETC) being considered as legitimate on the other chain by introducing a CHAIN_ID variable.

this may come in handy later when cross-chain alt-etherea such as SOIL, ETC, UBQ et al can freely communicate, either directly or via bridged smart contracts, with assets identified by their host CHAIN_ID.

Contract code has also been placed with a size limit to assist in defending against "transaction spam" attacks. The solution decided upon was to put a hard cap on the size of an object (contract code file) that can be saved to the blockchain, in a non-disruptive way. The size cap is set at a value slightly higher than what is feasible with current gas limits (a worst-case scenario sort of contract can be created with ~23200 bytes using the 4.7 million gas/block limit, whereas a normally created contract can go up to ~18 kb).

Ill finish up withthe update documentations tomorrow... theres a hockey game on. Some things take precedence. Have a great night...............



hero member
Activity: 722
Merit: 501
further protocol and blockchain upgrades via updates from 1.4.1 (Knoxjonesi) thru 1.4.7 (Colourise) implementations on SOILcoin:

The  --genesis flag used with private chains has been deprecated and replaced with the sub-command geth init to prevent the use of the --genesis flag with other flags, which was causing problems. A new field added to the genesis file: config allows the specification of configuration options for the use of private chains. *At present the only available option is "homesteadBlock":"0x block_number"*  

ADDED DEBUGGING OPTIONS:

traceTransaction( hash )
traceBlockByHash( hash )
traceBlockByNumber( number )
traceBlockByFile( file_with_rlp_encoded_block )
traceBlock( rlp_hex_encoded_string )

* accessed through either HTTP, IPC, or WebSocket RPC and the geth console.

minor fixes in 1.4.5 included some bug fixes related to WebSocket HTTP origins, and stopping transaction handling during the initial fast sync of a client to speed up the process. also introduced is a new RPC method: PrivateAccountAPI.SignAndSendTransaction which accepts a transaction and password as arguments. This allows external applications to submit transactions without the need to first unlock an account, which presented a potential attack vector during the small time window a wallet is unlocked, in order to submit a fraudulent transaction.

*EDGE*, or Enhanced Data Rates for GSM Evolution, introduces improved blockchain download concurrency to avoid bottlenecks caused by remote machines with poor connections, as well as an adaptive "quality-of-service tuning" allowing peer selection to be less aggressive for users with more restricted connectivity. The result is an improved blockchain syncing mechanism that can produce up to 8MB/s download speeds to retrieve the SOILcoin network blockchain (if your connectivity allows it), and provides a solid and stable stream for all users, verified for as low as EDGE connections (440ms latency, 200 kbps upstream, 220kbps downstream).

Blockchain syncing is further improved via concurrent downloading of block headers from several peers compared to the previous single-peer header-download which uses it's peers to download the block bodies, receipts, state, etc that the header chain defined. Now, using the concept of a "header skeleton" wherein a single "master-peer" is used to retrieve a skeleton of the header chain: where only every Nth header is retrieved, forming gaps of N-1 headers. Simultaneously, all the master's peers are used to fill in the missing N-1 headers, creating a batching solution and speedier blockchain sync.

((i timed the SOILcoin blockchain download for resyncing to the new client at a little over 12 minutes on the DUST client for SOILsafe. i can attest to nearly 24 hours of time downloading the blockchain with the previous version, and this change also scales the technology further towards being able to provide a Light SOIL Client, which again has its own advantages...))

The command exec.LookPath(solcPath) has been added to go-soil, which corrects issues in locating solc.exe for the development environment compiling of Solidity contracts. The JavaScript console was also cleaned up, and moved to its own package in the go-soil build, which will make it easier to make use of the console in dApps and other projects that embed gsoil into their own processes.

hero member
Activity: 722
Merit: 501
simply working our way forward through the updates is likely the easiest way to describe the changes forthcoming on the SOILnet. ill deal with these changes one or two aspect per post, and try to make it as understandable as possible.

Go 1.4.1 (Knoxjonesi) introduces

*Event Subscriptions*, or RPC PUB SUB, wherein an active, connected node can subscribe to blockchain event notifications rather than manually requesting them directly. the node will create a subscription id and provide notifications via RPC as subscription events occur. these subscriptions can be cancelled thru calls or by closing the connection to the gsoil client. these subscriptions are coupled to your connection to the SOIL network, thus if the connection is terminated, all subscriptions are automatically closed

example: creating a subscription
Subscriptions are created via a regular RPC call with eth_subscribe as method and the subscription name as the parameter. If successful it returns the subscription id (your active wallet address).

Code:
>> {"id": 1, "method": "eth_subscribe", "params": ["newBlocks", {}]}
<< {"jsonrpc":"2.0","id":1,"result":"0xcd0c3e8af590364c09d0fa6a1210faf5"}

produces subscribed results to the determined address (0xcd0c3e8af590364c09d0fa6a1210faf5) when new blocks are set on the blockchain.

Code:
<< {"jsonrpc":"2.0","method":"eth_subscription","params":{"subscription":"0xcd0c3e8af590364c09d0fa6a1210faf5","result":{"difficulty":"0xd9263f42a87",<...>, "uncles":[]}}}
<< {"jsonrpc":"2.0","method":"eth_subscription","params":{"subscription":"0xcd0c3e8af590364c09d0fa6a1210faf5","result":{"difficulty":"0xd90b1a7ad02", <...>, "uncles":["0x80aacd1ea4c9da32efd8c2cc9ab38f8f70578fcd46a1a4ed73f82f3e0957f936"]}}}

and can be unsubscribed to by
Code:
>> {"id": 1, "method": "eth_unsubscribe", "params": ["0xcd0c3e8af590364c09d0fa6a1210faf5"]}
<< {"jsonrpc":"2.0","id":1,"result":true}

currently supported subscriptions are (ie: placed in stead on "newBlocks" in the above example):
newHeads - produces a notification with new block header information, including difficulty, gas limit, miner, nonce, timestamp, etc.
logs - returns logs that are included in new imported blocks and match the given filter criteria, ex: addresses (personal or contract) or arrays of addresses, or topics. only logs that are created from events matching these filters are returned
newPendingTransactions - returns the hash for all transactions that are added to the pending blockchain state
syncing - a boolean return to provide notices of block chain synchronization start/stops

future available subscriptions being worked upon beyond this implementation will also provide subscription notices for current events related to balance changes, account changes, nonce changes and storage changes in contracts.



*Native Go DApp Development*, introduces a new tool called abigen (located in cmd/abigen) which enables fully automated creation of Go Bindings to any contract built for deployment on the SOILnet. In order to ensure client implementation for applications in various programming languages that operate on the EVM, and allowing for a streamlined approach to mainstream adoption, RPC interfaces for JavaScript dApps have made it possible for most use cases where manual interaction with the blockchain is necessary. The server side RPC use cases, where other languages are used (i.e.: backend data-access layers written in NodeJs, Python, Ruby or Perl; database administration; security and authentication) these bindings have been elusive.

abigen allows for work on server side native dApps, ensuring that Go-language bindings to contracts on the SOILnet are safe at the time of compiling and deployment, and that they can be independently, automatically and completely generated from a contract ABI or EVM bytecode. Overall, abigen will make it exponentially easier to construct functioning contracts on the SOILnet that are interactive within the DUST brower for SOILsafe.

The available tutorial for ETH regarding abigen relates to using the "official Token contract" (token.sol) as the base for introducing the Go native bindings. This contract source code repo is available at: https://gist.github.com/karalabe/08f4b780e01c8452d989 and is the ETH foundations representation as the common form of creating a token for oneself. (which can be done directly from within the DUST wallet for SOILsafe).

Interacting with a contract on the SOILcoin blockchain directly from the Go client (gsoil) is already possible via the RPC interfaces exposed by the client. Writing the boilerplate code that translates Go language constructs into RPC calls and back requires a lot of code to perform minimal functions, and as an aspect of application development... is an excessive time consumer and even small changes in Solidity can require a great deal of work to disposition the code to Go. With the introduction of abigen, the SOILcoin implementation of go-ethereum (go-soil) has a source code generator that will convert SOILcoin ABI definitions into ready-made Go packages. Assuming a valid Go development environment is set up, with godep installed, and an up-to-date build of gsoil, you can build the Go binding Generator with:

Code:
$ cd $GOPATH/src/github.com/SOILcoin/go-soil
$ godep go install ./cmd/abigen

GENERATING BINDINGS: The one prerequisite needed to generate a Go binding to an SOILcoin contract is that contract's ABI definition JSON file. For the example Token contract this is obtained by either compiling the Solidity code yourself (via an online solidity compiler such as at https://ethereum.github.io/browser-solidity/#version=soljson-v0.4.11+commit.68ef5810.js or https://etherchain.org/solc), or by using a  pre-compiled token.abi available at https://gist.github.com/karalabe/b8dfdb6d301660f56c1b.

To generate a binding, call:

Code:
$ abigen --abi token.abi --pkg main --type Token --out token.go

The flags are:
--abi: (Mandatory) path to the contract ABI to bind to
--pgk: (Mandatory) Go package name to place the Go code into
--type: (Optional) Go type name to assign to the binding struct
--out: (Optional) output path for the generated Go source file (not set = stdout)

This will generate a type-safe Go binding for the Token contract. The generated code will look something like token.go as referrenced by the original tutorial for this update, (https://gist.github.com/karalabe/5839509295afa4f7e2215bc4116c7a8f), but as the generator itself is upgraded, the structure of the Go bindings may change, and it is recommended to generate the bindings fresh when preparing to deploy this contract (token.sol) on the SOILcoin network.

The Go binding generator also produces ready-built RPC backends which can be attached to an active SOILcoin node via IPC, HTTP or WebSockets, and through which the user can access the SOILcoin network and further connect to, interact, and perform transactions with contracts deployed on the SOILnet. The generator also creates specialized wrappers which can be pre-configured with authorization parameters, allowing all the Solidity defined methods to be called by simple session commands.

Deploying contracts onto the SOILnet using abigen requires the use of the contract bytecode alongside the contract ABI. This is retrieved via the previously mentioned online compilers, where the token.sol contract code can be compiled, generating the bytecode (similar to the presented example from the original tutorial, found at https://gist.github.com/karalabe/026548f6a5f5f97b54de) saved as token.bin

Code:
$ abigen --abi token.abi --pkg main --type Token --out token.go --bin token.bin

This will generate something similar to the above referenced token.go with the addition of a DeployToken function.

abigen also allows for Go binding directly from Solidity source code, which first compiles the source code (via --solc) into it's fundamental commands and functions and binds using that. This has the added function that all contracts contained within a given Solidity source file are built and bound, so if the file contains many contract sources, they will all be available from Go code.

Code:
$ abigen --sol token.sol --pkg main --out token.go

Much of the Go binding generation process can be automated during contract updating by leveraging the go:generate binding into a Go source file before the package definition, after which whenever the Solidity contract is modified, instead of needing run the above command, a call go generate on the package will correctly generate the new bindings.

Code:
//go:generate abigen --sol token.sol --pkg main --out token.go

The final update that abigen presents is a very useful one, which i think may open up a great deal of possibilities for on-chain token economies going forward.  A simulated blockchain can be built as a backend to native contracts the same way as a live RPC backend could be, and which can be "mined" thru calling Commit. the adjusted code presented in the original tutorial for abigen follows:

Code:
package main

import (
"fmt"
"log"
"math/big"

"github.com/SOILcoin/go-soil/accounts/abi/bind"
"github.com/SOILcoin/go-soil/accounts/abi/bind/backends"
"github.com/SOILcoin/go-soil/core"
"github.com/SOILcoin/go-soil/crypto"
)

func main() {
// Generate a new random account and a funded simulator
key, _ := crypto.GenerateKey()
auth := bind.NewKeyedTransactor(key)

sim := backends.NewSimulatedBackend(core.GenesisAccount{Address: auth.From, Balance: big.NewInt(10000000000)})

// Deploy a token contract on the simulated blockchain
_, _, token, err := DeployMyToken(auth, sim, new(big.Int), "Simulated blockchain tokens", 0, "SBT")
if err != nil {
log.Fatalf("Failed to deploy new token contract: %v", err)
}
// Print the current (non existent) and pending name of the contract
name, _ := token.Name(nil)
fmt.Println("Pre-mining name:", name)

name, _ = token.Name(&bind.CallOpts{Pending: true})
fmt.Println("Pre-mining pending name:", name)

// Commit all pending transactions in the simulator and print the names again
sim.Commit()

name, _ = token.Name(nil)
fmt.Println("Post-mining name:", name)

name, _ = token.Name(&bind.CallOpts{Pending: true})
fmt.Println("Post-mining pending name:", name)
}

The original tutorial regarding abigen has a number of examples for usage, and when time permits, I'll write a tutorial showing how to use abigen via a gsoil development set-up, connecting to a similar sort of token on SOIL that the tutorial points towards (the Ethereum testnet Unicorn which mints 1 UNICORN to an address for every 2.something ETH sent to the contract address) and will add that information to this post when we set it up on the SOILcoin forum (which in and of itself still needs to be set up, just havent had the hours available to commit to that project yet.)









 

legendary
Activity: 1045
Merit: 1157
no degradation
...
Here is a fresh version of our Gui Wallet aka SOILsafe.
...
4) Have fun  Smiley
...
Nice work, again! Smiley

I've played with SOILsafe, it synced in < 1h and the balance shows up, great! I've tried so send some SOIL but had no luck. node.log shows:
Code:
INFO [05-07|23:56:35] Submitted transaction                    fullhash=0xd6e6703c372d7e7ef8aef9245a5f31264ce20b27b35a09d4359fb0d16ccee06f recipient=0x...
etc.
However, it seems the transaction was not transmitted to the network for some reason. Even with the maximum fee. I've not seen any additional details in the log-file.

Any idea what went wrong? Undecided
...
Please make a backup of your Soil folder (C:\Users\username\AppData\Roaming\Soil) or at least of your keystore folder! Then delete the Soil folder (C:\Users\username\AppData\Roaming\Soil). Make a backup of the SOILsafe folder (C:\Users\username\AppData\Roaming\SOILsafe). Then delete the the SOILsafe folder. Start the new SOILsafe again. It should sync within minutes. Copy your backup of the keystore folder back to C:\Users\username\AppData\Roaming\Soil. You now shouldn't have anymore transaction problems.
Thank you, this worked fine. I'm now able to send SOIL. Smiley

Just a note: It looks like my (failed) transactions initiated before were now sent with the first successfull transaction as well. I have no clue how this magic works as I deleted the whole Soil and SOILsafe folders as suggested.

I've managed to get additional (new) transactions 'stuck', just by playing with the transaction fee slider. However, simply deleting the C:\Users\username\AppData\Roaming\SOILsafe folder and initiating a new transaction with default fee seems to get them going. Cheesy
hero member
Activity: 722
Merit: 501
well, again, with kudos to marty, our new release of the core SOILcoin protocols will bring us up in equivalency compared to Ethereum's codebase to quite nearly where they are presently. [our paralleled versioning goes from 1.3.4 (Homestead) to 1.6.0 (PuppethMaster)] this naturally will make the direction towards implementation of a Proof of Stake or hybrid POW/POS rewards system much more attainable.

these changes will be implemented in two stages, based on the new release, on block 2.463.000 and then on block 2.675.000
the SOILcoin network is, at the time of this writing, at block 2.162.000.

there are a lot of changes in protocol, security and functionality that will occur with these updates, and ill be writing them out over the next couple days, one or two issues to a post. (another reminder that i need to get that SOILcoin forum sorted out and functioning so that a working copy of our changes and a similar wiki to ETH regarding functions can be built.)

again, many thanks to marty for his amazing work on the blockchain. this is a develpment team that the community should be proud of, and should greatly enhance the ability of SOILcoin to withstand a number of attack vectors that have plagued Dagger algorithm currencies, and should get the attention of the cryptocurrency exchanges to value SOILcoin as an asset worth listing.

MUCH more to come throughout the next day or two regarding what these updates are and do. stay tuned!
member
Activity: 82
Merit: 10
Auxiliary Soil Developer
...
Here is a fresh version of our Gui Wallet aka SOILsafe.
...
4) Have fun  Smiley
...
Nice work, again! Smiley

I've played with SOILsafe, it synced in < 1h and the balance shows up, great! I've tried so send some SOIL but had no luck. node.log shows:
Code:
INFO [05-07|23:56:35] Submitted transaction                    fullhash=0xd6e6703c372d7e7ef8aef9245a5f31264ce20b27b35a09d4359fb0d16ccee06f recipient=0x...
etc.
However, it seems the transaction was not transmitted to the network for some reason. Even with the maximum fee. I've not seen any additional details in the log-file.

Any idea what went wrong? Undecided

Thank you for your feedback! This is weird - I've modified the file internal/jsre/deps/web3.js but it has no effect. Any ideas?
...
[EDIT]
Seems it's also broken for expanse and ubiq. Maybe some web function.... I will leave it for now.
That's fine, thanks for having a look! Will keep it in mind. Smiley
Please make a backup of your Soil folder (C:\Users\username\AppData\Roaming\Soil) or at least of your keystore folder! Then delete the Soil folder (C:\Users\username\AppData\Roaming\Soil). Make a backup of the SOILsafe folder (C:\Users\username\AppData\Roaming\SOILsafe). Then delete the the SOILsafe folder. Start the new SOILsafe again. It should sync within minutes. Copy your backup of the keystore folder back to C:\Users\username\AppData\Roaming\Soil. You now shouldn't have anymore transaction problems.
legendary
Activity: 1045
Merit: 1157
no degradation
...
Here is a fresh version of our Gui Wallet aka SOILsafe.
...
4) Have fun  Smiley
...
Nice work, again! Smiley

I've played with SOILsafe, it synced in < 1h and the balance shows up, great! I've tried so send some SOIL but had no luck. node.log shows:
Code:
INFO [05-07|23:56:35] Submitted transaction                    fullhash=0xd6e6703c372d7e7ef8aef9245a5f31264ce20b27b35a09d4359fb0d16ccee06f recipient=0x...
etc.
However, it seems the transaction was not transmitted to the network for some reason. Even with the maximum fee. I've not seen any additional details in the log-file.

Any idea what went wrong? Undecided

Thank you for your feedback! This is weird - I've modified the file internal/jsre/deps/web3.js but it has no effect. Any ideas?
...
[EDIT]
Seems it's also broken for expanse and ubiq. Maybe some web function.... I will leave it for now.
That's fine, thanks for having a look! Will keep it in mind. Smiley
member
Activity: 82
Merit: 10
Auxiliary Soil Developer
member
Activity: 82
Merit: 10
Auxiliary Soil Developer
https://bitcointalksearch.org/topic/m.18089992

Guys, I will take the soil I got via the community address above for my recent work. I will send some soil to abvhiael too. I hope you're ok with this.
hero member
Activity: 722
Merit: 501


Hows the cryptopia funds going?

our DOT balance for our soilcoinfund account is 601828 DOT. so, we're 30% of the way there.
i havent gotten items up on the marketplace as id hoped this past week, was a crazy one for work on tattooing and search and rescue, im hoping i can steal a few hours this afternoon to get that started. still making inquiries at lots of exchanges, and the voting process is open at those listed previously in the thread, so at that point, its up to you guys, the community, to vote and get SOIL listed.
full member
Activity: 176
Merit: 100
altsheets will you update your explorer node? Since stats and pool is linked on yours?
jr. member
Activity: 64
Merit: 5
Node taking forever to sync and get error every 40k blocks or so that no peers are available, but continues from previous block immediately every time I restart the gsoil.exe. Will stick with it and continue restarting until synched but it will take a while at this rate. Any pointers appreciated. Thx
yes it will be admired if they will be participated in this case here.
member
Activity: 82
Merit: 10
Auxiliary Soil Developer




Here is a fresh version of our Gui Wallet aka SOILsafe. I've ported the latest meteor-dapp-wallet aka SOILsafe and the latest Mist aka Dust. SOILsafe is using the latest gsoil 1.6.1.

1) Please make a backup of your keystore folder! (You will find it in C:\Users\username\AppData\Roaming\Soil\ in windows and ~/.soil in linux
2) Delete the chaindata folder* (C:\Users\username\AppData\Roaming\Soil\chaindata in windows or ~/.soil/chaindata in linux )
3) Start SOILsafe.exe
4) Have fun  Smiley
5) Donate to teh Auxiliary Soil Developer

*Unfortunately a resync is needed. It will take you about 10 minutes with the new --fast sync option (default).

https://github.com/Soilcoin/SOILsafe/releases

Direct link for windows:
https://github.com/Soilcoin/SOILsafe/releases/download/0.8.10/SOILsafe-win64-0-8-10.zip
newbie
Activity: 46
Merit: 0
Community, even if your donations are rare  Wink - here is gsoil 1.6.1! based on the very latest go-ethereum sourcecode. This is a huge step compared to our current client, having now all the latest improvements included to gsoil. Believe me, that was not easy - keep in mind that I'm not a developer. Anyway here you go: https://github.com/Soilcoin/go-soil
[EDIT]
Binaries are now available:
https://github.com/Soilcoin/go-soil/releases

THIS IS AN UNSTABLE VERSION - Please make at least a backup of you keystore folder before you test it and do not send much soil until we are all on the same version. Let us know if you have some issues or if it's working great for you.

If you like my work... tip me  Smiley
[SOIL] 0x663682fd2d96064fdb2f152a56bab75d921065c0
BTC 17vKnSGtuegVi8LsSpQbJwDsNFdgrkwuwf

Here are the binaries:
https://github.com/Soilcoin/go-soil/releases


Got the error "Synchronisation failed..." "retrieved hash chain is invalid" @ 2122315. Do I have to resync from scratch with gsoil 1.6.1?

Unfortunately a resync is needed. It will take you about 10 minutes with the new --fast sync option (default). Delete C:\Users\username\AppData\Roaming\Soil\chaindata in windows or ~/.soil/chaindata in linux. This is needed because we jumped directly into the latest geth code-version. Please don't delete you keystore folder by accident!


Resynced from scratch within a couple of minutes. Great work, Marty!
member
Activity: 82
Merit: 10
Auxiliary Soil Developer
...
THIS IS AN UNSTABLE VERSION - Please make at least a backup of you keystore folder before you test it and do not send much soil until we are all on the same version. Let us know if you have some issues or if it's working great for you.
...
Indeed, well done! Smiley

Here is some feedback. I've updated a test node without big trouble. 1.6.1 redownloaded the whole blockchain, as I have no clue about all the Ethereum versions - not sure if this is expected or not. The node is running stable since ~ 24h without any crashes. Smiley

It looks like
Code:
web3.fromWei(eth.getBalance(eth.accounts[0]), "soil")
eth.sendTransaction({value:web3.toWei(0.1, "soil"), from:eth.coinbase, to:"address"})
etc. don't work anymore, I had to replace "soil" with "ether" to get it working, e.g.
Code:
web3.fromWei(eth.getBalance(eth.accounts[0]), "ether")

So far so good!



Thank you for your feedback! This is weird - I've modified the file internal/jsre/deps/web3.js but it has no effect. Any ideas?

Code:
var ETH_UNITS = [
    'wei',
    'kwei',
    'Mwei',
    'Gwei',
    'szabo',
    'finney',
    'femtosoil',
    'picosoil',
    'nanosoil',
    'microsoil',
    'millisoil',
    'nano',
    'micro',
    'milli',
    'soil',
    'grand',
    'Msoil',
    'Gsoil',
    'Tsoil',
    'Psoil',
    'Esoil',
    'Zsoil',
    'Ysoil',
    'Nsoil',
    'Dsoil',
    'Vsoil',
    'Usoil'
];

[EDIT]
Seems it's also broken for expanse and ubiq. Maybe some web function.... I will leave it for now.
Pages:
Jump to: