
The Initial version of the Light Ethereum Subprotocol (LES/1) and its Geth implementation are in progress. Although They are still in the experimental stage, they are expected to advance quickly. Once It is up and running, basic functions should be operational within a few weeks. A A thin client is designed to work similarly to a full-client, however it has certain limitations that DApp developers should be aware of. It It is important to keep these in mind when designing applications.
Well-designed A properly designed app should work in most cases, even when it does not know the type of client connected to it. We are also considering adding an API extension that can communicate different client capabilities to create a future-proof interface. Although While some of the details regarding LES are still being worked on, it’s a good time to discuss the most important differences between full and thin clients from the perspective of an application developer.
Current Limitations
Pending Transactions
Light A thin client does not receive any pending transactions on Ethereum mainnet. The Only transactions that a thin customer is aware of are the ones generated and sent by that client. When When a thin client sends a transaction, it starts downloading complete blocks until it discovers the transaction in one block and then removes it from the pending transactions list.
Find Hash transactions are possible
Currently It is only possible to find transactions that were locally generated using hash. These Transactions and the corresponding blocks are saved in the database. They can later be found using hashing. Finding Other transactions is a bit more challenging. It Although not yet implemented, it is possible to download them from a Server and verify that the transaction has been included in the Block if the Server found it. UnfortunatelyIf the server reports that the transaction does not exist, the client cannot validate the validity of the response. It It is possible to ask multiple servers if the first one does not know. However, the client cannot be certain that a transaction exists. For Most applications this is not a problem. But it is something to consider if something crucial depends on the existence of a transaction. It It would be possible to fool a thin enough client into thinking that there is no transaction with the provided hash, but it is not impossible.
Performance Considerations
Request Latency
A thin client only has the last few thousand block headers in its database. This It means that in order to retrieve anything else, clients will need to send requests to light servers. The Thin client tries optimize the request. Latency The key performance parameter of a thin customer is It it is normally in the order 100 to 200ms. It applies to each state/contract shop read, lock, retrieve receipt set. If If numerous requests are made in succession to perform an operation, it can cause slow response times for the user. Running Performance can be significantly improved by running API functions concurrently whenever possible.
Search Events in a long history
Full Our clients are our greatest asset. “mip-mapped” Bloom filter is a quick way to find events in large blocks. It’s also very cost-effective to search for specific events throughout the block history. UnfortunatelyIt is difficult to use a mipmapped filter with a thin client since searches are only performed on individual headers. Searching The history for a few days typically returns after a reasonable amount of time. At the moment, you shouldn’t search