What is a data node?
Data providers wishing to contribute to the Starnet network will operate a “data node,”
which is integral to the network’s functionality and central to the development of a robust
inference network. These data nodes run advertiser contributions locally, ensuring data integrity and
anonymity while being the first step in Decentralizing an Ad Bidder.
By aggregating and processing high-quality data, data nodes significantly enhance the
accuracy of machine learning models, leading to more precise ad targeting and improved attribution.
This not only drives the success of individual advertising efforts but also ensures the
scalability and efficiency of the entire Starnet ecosystem, laying the foundation for
long-term growth and innovation.
How do I earn $UA?
In the Dawn phase of our network, $UA is paid out based on initial model contributions. This
is from data sent using the SDK below.
After Dawn, variable contribution rates will be introduced awarding additional $UA based on the
usefulness of the contributions.
Javascript SDK
The Starnet Data Node SDK allows applications to contribute event and profile data to the Starnet network.
The first supported event is the IdentifyEvent
sent anytime new information is learned about a user.
Other events coming soon:
- login
- register
- purchase
- level reached
- tutorial completed
- invite
- share
Here’s how to send your first identify
event. This can be sent on sign up or from an existing database of users.
// Initializing the SDK with the provided secret
const sdk = new StarnetDataCloud(secret: string);
// create ProfileData object
const profileData: ProfileData = {
uniqueId: '12345',
demographic: { age: 30, gender: 'male' },
social: { twitterId: '@example' },
device: { deviceId: 'device123', ipAddress: '192.168.1.1' },
interest: ['gaming', 'tech']
};
// send identify event
await sdk.eventRegistry.identify(profileData)
.then(response => console.log('Event logged successfully:', response))
.catch(err => console.error('Error logging event:', err));
Here’s the full data structure for ProfileData
. Data considered PII is hashed by the SDK:
interface DemographicData {
age?: number;
gender?: string;
location?: string;
language?: string[];
incomeLevel?: string;
educationLevel?: string;
occupation?: string;
maritalStatus?: string;
familySize?: number;
ethnicity?: string;
residentialStatus?: string;
}
interface SocialIdentifiers {
twitterId?: string;
discordId?: string;
telegramId?: string;
farcasterId?: string;
youtubeId?: string;
facebookId?: string;
linkedInId?: string;
instagramId?: string;
githubId?: string;
spotifyId?: string;
tikTokId?: string;
snapChatId?: string;
twitchId?: string;
weChatId?: string;
lineId?: string;
whatsAppId?: string;
email?: string;
phoneNumber?: string;
appleId?: string;
googleId?: string;
telegramId?: string;
discordId?: string;
whatsappId?: string;
twitterId?: string;
}
interface DeviceData {
ipAddress?: string;
deviceId?: string;
userAgent?: string;
deviceType?: string;
operatingSystem?: string;
browserType?: string;
networkType?: string;
cookieId?: string;
locationTracking?: boolean;
deviceFingerprint?: string;
walletAddress?: string[]; // EVM, SOL, etc
}
interface ProfileData {
uniqueId: string;
demographic: DemographicData;
social: SocialIdentifers;
device: DeviceData;
interest: string[];
}