<p dir="auto">I've been super busy for a while, so I fell behind a bit on reporting progress (it's been about 4 months since my last report...). Originally I was planning an earlier release of everything, but in the end we decided to push back the releases so that we could add more features that we considered important to completed.
<p dir="auto">Since so much work has been done since my last report, a report of all the details would be a bit overwhelming, so I decided to write this report in the form of earlier "release notes" for all the software, just to keep it compact.
<p dir="auto">I'm breaking the report up into two separate posts, this first one covers the backend services (e.g. hived, HAF, API servers, client libraries), and the next report which I'll publish in the next few days will cover work done on the user interfaces (denser, the block explorer UI, clive).
<h2><a href="https://gitlab.syncad.com/hive/hive" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Hived: blockchain node software
<h3>New features and functional improvements
<ol>
<li><p dir="auto">HF28 features:
<ul>
<li><span>Improved witness properties update (new values previously appeared too early) <a href="https://gitlab.syncad.com/hive/hive/-/merge_requests/1360" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hive/-/merge_requests/1360
<li><span>Max block size configuration (by witnesses) can't exceed 2MB value: <a href="https://gitlab.syncad.com/hive/hive/-/merge_requests/1357" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hive/-/merge_requests/1357
<li><span>Increased transaction expiration time: <a href="https://gitlab.syncad.com/hive/hive/-/merge_requests/1383" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hive/-/merge_requests/1383
<li>Proposed HF28 date set to 11. December 2024
<li><p dir="auto">New configuration options to preventing hived nodes from being flooded by transactions. This included adding several new config options: <code>rc-flood-level, <code>rc-flood-surcharge, and <code>max-mempool-size (the new default settings are probably fine for most hived nodes). RC costs of incoming transactions now start increasing when high activity (flooding) is detected in order to reduce the number of pending transactions that can build up and consume RAM. Once a transaction is finally put into a block, costs are calculated using regular rules, so final RC costs are not affected by this change.<br /><br /><span>
<a href="https://gitlab.syncad.com/hive/hive/-/merge_requests/1397" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hive/-/merge_requests/1397<span>
<a href="https://gitlab.syncad.com/hive/hive/-/merge_requests/1390" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hive/-/merge_requests/1390
<li><p dir="auto"><span>Better handling of shared_memory.bin allocation errors: <a href="https://gitlab.syncad.com/hive/hive/-/merge_requests/1372" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hive/-/merge_requests/1372 . Hived will produce an error if the shared_memory.bin will lead to an insufficient amount of free space on the filesystem holding shared memory. This change can prevent runtime failures during memory allocation and helps to find a mis-configuration of the shared memory.
<li><p dir="auto"><span>Improved error messaging: <a href="https://gitlab.syncad.com/hive/hive/-/merge_requests/1359/" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hive/-/merge_requests/1359/ <a href="https://gitlab.syncad.com/hive/hive/-/merge_requests/1387" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hive/-/merge_requests/1387
<li><p dir="auto"><span>Hived API supports keep-alive connections: <a href="https://gitlab.syncad.com/hive/hive/-/merge_requests/1363" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hive/-/merge_requests/1363
<li><p dir="auto"><span>Generated config.ini contains generated default option values as comments. This change makes it easier to detect which options have been customized, as such options will have an explicit setting in the file: <a href="https://gitlab.syncad.com/hive/hive/-/merge_requests/1361" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hive/-/merge_requests/1361
<li><p dir="auto"><span>Eliminated configuration options and plugins previously marked as deprecated: <a href="https://gitlab.syncad.com/hive/hive/-/issues/649" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hive/-/issues/649
<li><p dir="auto">Support for pruned block log. Hived configuration options allows storing blocks in local blockchain subdirectory as:
<ul>
<li>a single monolithic file (old legacy way),
<li>split into 1M block parts, which allows you to relocate files across different filesystems and symlink them in the blockchain directory
<li>pruned to store the latest N 1M block parts (including setting N=0 to avoid storing any blocks)
<p dir="auto">Block log pruning saves disk space, but also reduces the ability to support <code>block_api usage via hived (although nowadays blocks are better served via HAfAH anyway) and P2P syncing of nodes that need to catch up to the current head block.
<p dir="auto">Hived can automatically split an existing monolithic block_log when the conf file is changed from monolithic to split storage.
<p dir="auto">The <code>block-log-split option defaults to 9999 to enable split mode in the block storage. So, if you update an existing hived that is synced with the new version, it will automatically split your block log at startup (this one-time process takes around half an hour).
<p dir="auto">The block_log_util tool also has been extended to support file splitting.
<h3>Bugfixes
<ol>
<li><span>Fixed hived crash that could occur when a block_log file doesn't exist <a href="https://gitlab.syncad.com/hive/hive/-/merge_requests/1367" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hive/-/merge_requests/1367
<li><span>Fixed concurrency problems between witness and writer threads while evaluating blockchain operations: <a href="https://gitlab.syncad.com/hive/hive/-/merge_requests/1268" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hive/-/merge_requests/1268
<li><span>Fixes related to the condenser_api and producing the JSON legacy form of operations: <a href="https://gitlab.syncad.com/hive/hive/-/merge_requests/1381" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hive/-/merge_requests/1381
<h2><a href="https://gitlab.syncad.com/hive/haf" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">HAF: framework for creating new Hive APIs and apps
<h3>New features and functional improvements
<ol>
<li><span>New API calls for HAF apps to allow for more flexible and less error-prone coding of an app's operation processing loop. One of the biggest benefits is that it is easier to make sure a HAF app will always be in a consistent state if it gets interupted and then restarted: <a href="https://gitlab.syncad.com/hive/haf/-/merge_requests/504" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/haf/-/merge_requests/504
<li><span>Removed block_num, operation type and _timestamp columns to reduce SQL database storage size: <a href="https://gitlab.syncad.com/hive/haf/-/merge_requests/492" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/haf/-/merge_requests/492 <a href="https://gitlab.syncad.com/hive/haf/-/merge_requests/496" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/haf/-/merge_requests/496
<li><span>HAF maintenance actions are performed by pg_cron tool: <a href="https://gitlab.syncad.com/hive/haf/-/merge_requests/531" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/haf/-/merge_requests/531
<li><span>HAF database uses C collation settings to speedup index search and creation: <a href="https://gitlab.syncad.com/hive/haf/-/merge_requests/514" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/haf/-/merge_requests/514
<h3>Bugfixes
<ol>
<li><span>Fixed database integrity problem during HAF node restart when reversible data has been collected: <a href="https://gitlab.syncad.com/hive/haf/-/merge_requests/532" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/haf/-/merge_requests/532
<li><span>Corrected HAF node upgrade issues: <a href="https://gitlab.syncad.com/hive/haf/-/merge_requests/529" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/haf/-/merge_requests/529
<li><span>Fixed errors in the autodetach procedure for dead apps: <a href="https://gitlab.syncad.com/hive/haf/-/merge_requests/525" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/haf/-/merge_requests/525
<li><span>Fixed bugs leading to multiple application deadlock during attaching a context: <a href="https://gitlab.syncad.com/hive/haf/-/merge_requests/518" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/haf/-/merge_requests/518
<li><span>Fixed deadlock during HAF data dumping: <a href="https://gitlab.syncad.com/hive/haf/-/merge_requests/505" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/haf/-/merge_requests/505 <a href="https://gitlab.syncad.com/hive/haf/-/merge_requests/511" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/haf/-/merge_requests/511
<h2><a href="https://gitlab.syncad.com/hive/hivemind" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Hivemind: social media API
<h3>New features and functional improvements
<ol>
<li>Switching to PostgREST as HTTP server provider from the current Python based implementation to improve performance and pave the way for a REST-based hivemind API.
<li><span>Hivemind APIs additionally return mute reason: <a href="https://gitlab.syncad.com/hive/hivemind/-/merge_requests/626" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hivemind/-/merge_requests/626
<li><span>bridge.get_discussion API returns information related to pinned post: <a href="https://gitlab.syncad.com/hive/hivemind/-/merge_requests/715" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hivemind/-/merge_requests/715
<li><span>bridge.get_account_posts supports observer parameter: <a href="https://gitlab.syncad.com/hive/hivemind/-/merge_requests/716" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hivemind/-/merge_requests/716
<li><span>Community support improvements: <a href="https://gitlab.syncad.com/hive/hivemind/-/merge_requests/711" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hivemind/-/merge_requests/711
<li><span>Sync performance optimizations: <a href="https://gitlab.syncad.com/hive/hivemind/-/merge_requests/706" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hivemind/-/merge_requests/706 <a href="https://gitlab.syncad.com/hive/hivemind/-/merge_requests/718" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hivemind/-/merge_requests/718 <a href="https://gitlab.syncad.com/hive/hivemind/-/merge_requests/746" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hivemind/-/merge_requests/746
<li>Hivemind uses a new Reputation Tracker HAF application to calculate reputation data in a way matching hived's reputation_plugin algorithm.
<li><span>Reduced Hivemind docker image size: <a href="https://gitlab.syncad.com/hive/hivemind/-/merge_requests/726" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hivemind/-/merge_requests/726
<li><span>Hivemind sync processing switched to use the new HAF application main loop: <a href="https://gitlab.syncad.com/hive/hivemind/-/merge_requests/701" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hivemind/-/merge_requests/701
<h2><a href="https://gitlab.syncad.com/hive/HAfAH" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">HAfAH: account history API
<ol>
<li><span>Support for a new REST API including generated Swagger documentation. The REST API docs for Hafah are here: <a href="https://api.syncad.com/?urls.primaryName=HAfAH" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://api.syncad.com/?urls.primaryName=HAfAH
<h2><a href="https://gitlab.syncad.com/hive/balance_tracker" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Balance tracker API: tracks token balance histories for accounts
<h3>New features and functional improvements
<ol>
<li><span>Support for a new REST API including generated Swagger documentation. The REST API docs for balance tracker are here: <a href="https://api.syncad.com/?urls.primaryName=Balance+Tracker" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://api.syncad.com/?urls.primaryName=Balance+Tracker
<li><span>Support for balance history APIs: <a href="https://gitlab.syncad.com/hive/balance_tracker/-/merge_requests/105" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/balance_tracker/-/merge_requests/105
<li><span>HAF's new app loop used for the operation processing code: <a href="https://gitlab.syncad.com/hive/balance_tracker/-/merge_requests/100" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/balance_tracker/-/merge_requests/100
<li>Allow custom schema installation to support separate deployments of balance tracker in the same database (i.e. when balance_tracker is referenced from multiple parent applications or uses some specific configuration).
<h2><a href="https://gitlab.syncad.com/hive/reputation_tracker" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Reputation tracker: API for fetching account reputation
<p dir="auto">Created a new HAF application which calculates reputation values matching to Hived reputation plugin.
<p dir="auto">This application is used by Hivemind and HAF Block Explorer to provide reputation data needed for their APIs.
<p dir="auto"><span>The REST API docs for the reputation tracker are here: <a href="https://api.syncad.com/?urls.primaryName=Reputation+Tracker" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://api.syncad.com/?urls.primaryName=Reputation+Tracker
<h2><a href="https://gitlab.syncad.com/hive/haf_block_explorer" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">HAF Block Explorer
<h3>New features and functional improvements
<ol>
<li><span>Support for a new REST API including generated Swagger documentation. The REST API docs for the block explorer are here: <a href="https://api.syncad.com/?urls.primaryName=HAF+Block+Explorer" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://api.syncad.com/?urls.primaryName=HAF+Block+Explorer
<li><span>API calls accepting block range parameters can take a block number or a timestamp as block range constraints <a href="https://gitlab.syncad.com/hive/haf_block_explorer/-/merge_requests/214" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/haf_block_explorer/-/merge_requests/214
<li>Witness API improvements:
<ul>
<li>added <code>feed_updated_at<span> <a href="https://gitlab.syncad.com/hive/haf_block_explorer/-/merge_requests/209" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/haf_block_explorer/-/merge_requests/209
<li><span>removed redundant VESTS data returned as Hive Power due to ability to recalculate it on client side due to Wax library features: <a href="https://gitlab.syncad.com/hive/haf_block_explorer/-/merge_requests/212" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/haf_block_explorer/-/merge_requests/212
<li><span>App sync uses new HAF main loop scheme: <a href="https://gitlab.syncad.com/hive/haf_block_explorer/-/merge_requests/196" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/haf_block_explorer/-/merge_requests/196
<li><span>Reputation data is read from the reputation_tracker app's schema. Previously reputation calculations were done within the block explorer's sync thread, so syncing the block explorer is now about 2x faster than earlier versions (but we also track many more types of balances, so it is about the same sync speed as the initial release done back last September): <a href="https://gitlab.syncad.com/hive/haf_block_explorer/-/merge_requests/177" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/haf_block_explorer/-/merge_requests/177
<h2><a href="https://gitlab.syncad.com/hive/wax" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">WAX API library for Hive apps
<p dir="auto">Initial release candidate of Hive integration library into Typescript (NodeJS/Web browser) environment. Wax allows developers to easily create and process Hive blockchain transactions and operations. It it is also easy to add support new custom API call definitions (e.g. API calls for custom HAF apps) which can then be called as regular functions.
<p dir="auto">On the implementation side, the Wax library directly shares C++ code from the Hive Protocol to always match the blockchain's behavior. Wax is an object-oriented library and is coded to allow for "intellisense" style support from IDE's such as Visual Code, which greatly simplifies writing client code with the library.
<p dir="auto">We are also in the process of developing a python version of Wax. The python version is already being used as we develop Clive, a new wallet for Hive, but it is not yet ready for official public integrations.
<h2>Beekeeper: light weight process for securely storing cryptographic keys
<h3>
<ol>
<li>New API endpoints: <code>has_wallet<span> and ability to create temporary (not persisted) wallets. <a href="https://gitlab.syncad.com/hive/hive/-/merge_requests/1355" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hive/-/merge_requests/1355
<li><span>New API endpoint to allow import of multiple keys: <a href="https://gitlab.syncad.com/hive/hive/-/merge_requests/1326" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hive/-/merge_requests/1326
<li><span>Preliminary support for python wrappers to enable integrating Beekeeper tool into a python workflow: <a href="https://gitlab.syncad.com/hive/helpy/-/merge_requests/55" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/helpy/-/merge_requests/55
<h3>Bugfixes
<ol>
<li><span>Fixed bug in wallet synchronization between opened multiple network sessions: <a href="https://gitlab.syncad.com/hive/hive/-/merge_requests/1344" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hive/-/merge_requests/1344
<li><span>Improved session timeout handling: <a href="https://gitlab.syncad.com/hive/hive/-/merge_requests/1342" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hive/-/merge_requests/1342
<li><span>Shutdown fixes: <a href="https://gitlab.syncad.com/hive/hive/-/merge_requests/1311" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://gitlab.syncad.com/hive/hive/-/merge_requests/1311
<h2>API Node Benchmarking
<p dir="auto">We're still making improvements to the backend services, but we have begun initial test of "full api node" syncing. Here's some tests I ran on one of our faster servers (AMD 7950 with 2x4TB T700 nvmes):
<ul>
<li>HAF replay time: 15 hours
<li>Simultaneous replay of hafbe (30 hours), reptracker (35.6 hours), and hivemind (61.8 hours).
<li>So total time to get a fast node up with all services is 15 (haf) + 61.8 (hivemind, the longest of the three services) = 78.6 hours = 3 days 6.6 hours
<p dir="auto">I don't expect much improvement in the sync times prior to the release, but these numbers are looking pretty good, especially since the blockchain grows by about 1 million blocks per month and these numbers are still close to times from the release last year despite all the blocks that have been added since then.
<h2>What's next?
<p dir="auto">We're still adding features and working on documentation, but we have started doing real-world deployment testing, and the next step will be to do some production testing with real world traffic. At this point, I'm shooting for a December release, as I think we have too many useful features that should be released as soon as possible, so we shouldn't delay the releases to add many more features.
Oh, not only that, they are better than times that we had 4 years ago when we had less than half of the blocks that we have now.
It's funny to look at old posts to compare what have changed:
Here's my 4 years old "Hive Pressure 2: How to Answer Hive Questions?"
TL;DR: "Roughly you need 4 days and 9 hours to have it synced to the latest head block."
Of course my old server, and not even my current one can't beat yours, but assuming 33% slower, I think it could still keep up with with 4d9h benchmark :-)
Well, it is of course a night and day comparison if we look at code from 4 years ago.
For some reason (I can't remember why), I took a look at state of Steemit code a couple of days ago to see how long it looks like it will be before it collapses under its own weight.
It turns out the only "fixes" that have been done are all to limit the functionality of the code so that their servers don't just die now.
As one example, despite having about 1/10th our transaction volume, apparently their servers began having problems serving up account histories and this was loading down the API servers and resulting in locking issues in the hived nodes that were serving up account history info.
What was the solution? Speed it up or offload the work? Nope! Instead now they only allow fetching the last 7 days worth of operations for an account :-) I guess you're supposed to go to a block explorer to see the rest...
That's a hilariously bad solution, but absolutely 100% on-par for what Sun would mandate, so I'm not at all surprised.
Giving Sun even credit for this is in fact too much credit: as far as I can tell, it was done by some independent dev, who can see the upcoming wall that Steem is driving towards and is trying to slow down the car.
I had gathered previously that the RC cost of transactions would go up if things got too busy. Does this happen much? I assume it protects us from certain kinds of attack.
There is some code like that, but it is a bit different than the change we just made. That code charges extra for particular resources when it detects they are being used a lot. And in that case the actual final RC cost goes up, it is not just a temporary cost. But none of those increases protected well against this particular form of attack.
We developed this as a solution after flooding a test net with as many transactions as it was possible to throw at it, all while leaving the block size at its current level (64K), which results in the worst case memory usage for pending transactions (because it constantly generates more transactions than can fit in the blocks and they build up). Such an attack isn't particularly easy to do (we had to write special versions of hived that could even manage to do it), but long term it is important to have this kind of resilience. Part of this attack is also only opened up because we are increasing the time that pending transactions can stay in memory (which will be very useful for transactions signed by multiple parties since it takes some time for each party to pass around and sign the transaction).
You are doing well and I hope you have planned unique features for the hive platform. All the best!
!PIZZA
!LOL
!INDEED
lolztoken.com
now we just call him Phil.
Credit: reddit
$LOLZ on behalf of cryptoyzzy
(9/10)
NEW: Join LOLZ's Daily Earn and Burn Contest and win $LOLZ@blocktrades, I sent you an
(10/10)
@cryptoyzzy Totally agrees with your content! so I just sent 1 IDD@blocktrades! to your account on behalf of @cryptoyzzy.
Wow, thanks so much for the detailed report! You can see that there has been a lot of progress since the last update.
i always say that hive boom boom, i am feeling proud that i am part of hive since birth, great updates, and every new features bring us close to real success,
Es un gran informe detallado , esto es un manual que me impulsa a investigar y conocer esa gran cantidad de términos técnicos los cuales desconozco, además de ser un informe es una guía para comprender y estudiar
!PIZZA
$PIZZA slices delivered:
(2/10) @danzocal tipped @blocktrades
Congratulations @blocktrades! Your post has been a top performer on the Hive blockchain and you have been rewarded with this rare badge
<table><tr><td><img src="https://images.hive.blog/60x60/https://hivebuzz.me/badges/toppayoutday.png" /><td>Post with the highest payout of the day. <p dir="auto"><sub><em>You can view your badges on <a href="https://hivebuzz.me/@blocktrades" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">your board and compare yourself to others in the <a href="https://hivebuzz.me/ranking" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Ranking<br /> <sub><em>If you no longer want to receive notifications, reply to this comment with the word <code>STOP!LOL
!INDEED
(9/10)
@phillarecette Totally agrees with your content! so I just sent 1 IDD@blocktrades! to your account on behalf of @phillarecette.
Congratulations @blocktrades! Your post has been a top performer on the Hive blockchain and you have been rewarded with this rare badge
<table><tr><td><img src="https://images.hive.blog/60x60/https://hivebuzz.me/badges/toppayoutweek.png" /><td>Post with the highest payout of the week. <p dir="auto"><sub><em>You can view your badges on <a href="https://hivebuzz.me/@blocktrades" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">your board and compare yourself to others in the <a href="https://hivebuzz.me/ranking" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Ranking<br /> <sub><em>If you no longer want to receive notifications, reply to this comment with the word <code>STOPI've been checked out from Hive for a while, but wanted to ask, if I want to develop a HAF dapp on hive, will it take care of micro-forks or will I need to handle that? I have a web 2 game that I want to tokenize
HAF was designed to automatically handle micro-forks. It actually has two modes:1) in the default mode, it tracks all changes up in your app's tables up to the last irreversible block, so it can revert those changes in case of a fork and 2) irreversible mode, where it the blockchain data is only made available to your app after the block becomes irreversible. Originally I planned for a lot of apps to use the default mode, but with OBI, using the second mode works pretty well too (and it is slightly faster).
Canva Pro Invite Team