Native Ads is a proposed Hivemind upgrade for developing an open protocol to support a native advertisement system for Steem communities.
Proposal Overview
SECTION 1: a brief overview of how Native Ads will work and links to more technical documents.
SECTION 2: how implementing Native Ads will benefit the Steem ecosystem.
SECTION 3: the development status; with links to where you can find the current codebase (alpha version), test ad entries already posted on the Steem blockchain and my development plans.
SECTION 1: HOW WILL NATIVE ADS WORK?
Blockchain's power lies in the ability to record intent and use the intents of all the parties involved to reach consensus, among other things. By capturing the intents of ad creators and community moderators on the Steem blockchain, Native Ads brings transparency, accountability and auditability to how any ad is created, funded and approved to be shown within a community.
I am proposing to create an ad protocol that is based on free market principles, by monetizing both ad space and ad time, and allowing for open, competitive bidding of these assets within any community that opts in.
On a blockchain level, a number of methods are employed to achieve this end:
json_metadata
in posts is used to record an ad's propertiescustom_json
operations are used to capture the placement of bids on the ad market and moderation outcomes- a
native_ads
key will be added to community settings to let communities enable and customize their Native Ads implementations
What emerges is an objectively decentralized and transparent system that creates synergy between people who want to place ads within a Steem community, members of that community and the members responsible for moderating that community.
For a more technical and detailed explanation of how Native Ads will be developed, read the Design Overview document and the Development Scope document on GitHub.
EXTRA READING:
-Selling both ad space and ad time using STEEM/SMTs (Non-technical Explanation)
SECTION 2: HOW DOES THE STEEM ECOSYSTEM BENEFIT?
Sustainability is the foremost benefit that Steem communities will gain by opting in to using Native Ads. Whether they choose to use STEEM or another SMT to sell attention, the economic benefits benefit the entire Steem ecosystem.
Creating a new market
By implementing Native Ads, Steem will not be "competing" or "trying to disrupt" the existing social media ad market. The two markets are fundamentally different. One depends on the current financial system (and its limitations) and the other will depend on open and borderless cryptocurrencies (STEEM/SMTs).
It's a new market. One that is probably bigger than the existing one, when you consider how many people cryptocurrencies have the potential to cater to: the greater "unbanked."
Ushering in attention tokens
Native Ads has the potential to inspire the creation of SMTs tailored specifically for use as attention tokens, that are built around a community, its values/ethos and the value of its attention.
Such SMTs can help spread the economic value of attention to all participants through the proof of brain inherent in them, adding value to the ownership and influence that holding these tokens entails.
Increasing the value of STEEM and SMTs
Native Ads will bring utility value to the tokens used, whether STEEM or an SMT. I shared my thoughts on the effects of perceived attention value vs STEEM/SMT price in the following blog post (I recommend reading it):
Insights into the exponential effects of STEEM/SMT price VS Perceived Attention Value
A common protocol avoids fragmentation
With the many front-ends already building on the Steem blockchain and the many more to come, the lack of a common protocol for ads will result in fragmentation, as platforms that seek to create attention economies come up with their own implementations.
Native Ads helps avoid or reduce fragmentation.
Cross-platform and UI agnostic
By implementing this within Hivemind Communities, all Steem communities gain access to this feature regardless of what front-end platform they use.
One of the design principles I am following is to enable flexibility. One good example is ad types. Native Ads allows anyone to develop an ad type and implement it, without having to change any of the Hivemind codebase. This is because ad types are not hardcoded, but stored as open fields, benefiting from JSON's flexibility.
The possibilities are limited only to the imagination and practical use cases.
The problems being solved
Ads, in a nutshell, are visibility or attention that is purchased. Currently, ads on the Internet suffer mostly from misalignment of interests between stakeholders, lack of transparency, hidden agendas and market inefficiencies. Problems that can be addressed quite effectively with Hivemind Communities and Native Ads.
It is wise to avoid underestimating the amount of vested interest that will be present within Steem communities. It will change ads from being a game of how much money can I make showing people stuff they don't care about, to what informative, useful and perhaps entertaining messages can be shared within our community in a mutually beneficial way that doesn't sacrifice our principles or compromise our ethos; that also benefits us economically.
I shared more thoughts on this here:
Ads on the Internet have problems — maybe Hivemind Communities and Native Ads might solve them
SECTION 3: DEVELOPMENT STATUS
This project has been in pre-alpha for about two months, as I worked on its scope, logic and design aspects. I was also waiting for Hivemind development to progress a bit, since the codebases need to be compatible for an upgrade to be made.
In the last few days, I have written code for some of the fundamental features and made a few test transactions on the blockchain. This effectively marks the beginning of my efforts to push this to an alpha release, and eventually a beta release.
Where to find the code
You can find the code on my fork of Hivemind on GitHub. Among the branches present there at the moment:
- master: kept in sync with
steemit:hivemind/master
- native-ads-alpha: will contain codebase for the alpha version. Currently has commits made for DB schema upgrade and hooks for saving new ads in the DB.
If you want to test the native-ads-alpha code right now, you'll need to add the hive_ads
table manually, as I'm yet to add a "missing table check" to the code. To create the table, run this SQL query when connected to the hive
database:
CREATE TABLE hive_ads (
post_id integer PRIMARY KEY,
community_id integer NOT NULL,
type varchar(16) NOT NULL,
properties text NOT NULL,
time_units integer NOT NULL,
start_time timestamp,
status smallint NOT NULL DEFAULT 0,
mod_notes varchar(500) DEFAULT ''
);
Using custom Python scripts to sign and broadcast transactions, I have performed a few Native Ads operations on the Steem blockchain. I have documented the results of my recent tests below.
Ad creation example
I ran a few test ad creation transactions and the valid ones where saved to the DB.
My accounts
@imwatsi.test: used to broadcast test transactions
@hive-133333: a test community I created for Native Ads development
Broadcast: ad creation posts
If you check on my account @imwatsi.test, you'll see a number of test posts. The posts Testing Native Ads 1 through 4 all where invalid. The first valid ad was "Testing Native Ads 5."
It had the following JSON_metadata:
{
"app":"imwatsi-test",
"format":"markdown",
"tags":["hive-133333","hive","communities"],
"native_ad":{
"type":"other",
"properties":{"devices":"all"},
"time_units":30
}
}
It had the following JSON_metada:
{
"app":"imwatsi-test",
"format":"markdown",
"tags":["hive-133333"],
"native_ad":{
"type":"native-post",
"properties":{"devices":"all"},
"time_units":120
}
}
Database preview
I ran an SQL query to view records from the hive_ads
table and their corresponding post data from the hive_posts_cache
table. The hive_ads
table has only three records, as there were only three valid ad posts made.
Here's a screencast of the results:
Future work
This is still an alpha version and a lot more still needs to be developed, which includes:
- User operations (ad bid/submit/fund operations)
- Moderation operations (ad approve, reject)
- API endpoints for data retrieval (for moderation and user interfaces)
- Development of standard ad types (e.g. slideshows, animations, polls)
Proposal Details
Funding
Daily Amount: 75 SBD
Duration: 120 days
Total: 9000 SBD
Scope of the work I'm doing
Codebase:
- Database design upgrades
- Indexing logic
Documentation:
- Front-end implementation guidelines
- Ad type standards
- Best practices
Alpha Version
This version will be basic, laying the foundation for more advanced features in the future. It will have these features to start with:
- Unscheduled ads only
- Native post ad type only
- Competitive ad bidding
Beta Version
The beta version will build upon the alpha, adding more data sets for ad bidding, more ad types and scheduled ads.
Deliverables
I intend to develop this project to an alpha release and a beta release, within the timeframe of this proposal. My hope is that Native Ads becomes available for public use toward the end of the 120 days. If the amount of work involved demands more time, I will communicate my plans through updates on my blog.
I will also create documentation for front-end developers to help them implement Native Ads, and I will develop and document standards for ad design and ad types as they apply to Native Ads.
I will post regular updates on my blog (ideally every weekend) detailing my progress, with links to the relevant branches/commits on GitHub that the community can check out at any time.
Thank you for your time,