Some time ago, I learnt GraphQL, for use on Bitquery, as a way of querying the blockchain for specific transactions that I've initiated to a particular contract.
Below's a specific query I've built:
query CallsToSmartContractAddressByCallerInAscendingTimestamp($contractAddress: String, $caller: String){ ethereum { smartContractCalls( caller: {is: $caller} options: {asc: "block.timestamp.unixtime"} smartContractAddress: {is: $contractAddress} ) { block { timestamp { unixtime } } transaction { hash } } }}
The above GraphQL queries the Ethereum blockchain, for calls to the smart contract located at $contractAddress, by the caller $caller, and outputs the transaction hash, and the unixtime.
The parameters are specified in the following format, where .... are the actual values of the contract address and the caller address.
{ "contractAddress": "0x...", "caller": "0x..."}
What this does is to allow me to list all the transactions initiated by myself to a specific smart contract.
In 2017, with the release of Delphi 10.2 Tokyo, Embarcadero introduced a specialized implementation of the Observer pattern into the System.Classes unit. While it has been in the wild for 9 years, it remains a "hidden" architecture for many, primarily because it serves as the invisible engine behind LiveBindings. Other than live bindings, you can also use the Observer pattern as a way to update component settings to the Windows registry, an .ini file, or persist it elsewhere.
System.Classes