"description":"The `print` function evaluates and returns its input expression. On Blockstack Core\nnodes configured for development (as opposed to production mining nodes), this function prints the resulting value to `STDOUT` (standard output).",
"description":"The `print` function evaluates and returns its input expression. On Stacks Core\nnodes configured for development (as opposed to production mining nodes), this function prints the resulting value to `STDOUT` (standard output).",
description: Blockstack Auth provides single sign on and authentication without third parties or remote servers.
description: Stacks Auth provides single sign on and authentication without third parties or remote servers.
images:
large: /images/pages/authentication.svg
sm: /images/pages/authentication-sm.svg
@ -8,13 +8,13 @@ images:
## Authentication flow
For an application developer, the application flow is similar to the typical client-server flow used by centralized sign in services (e.g., OAuth). However, with Blockstack, the authentication flow happens entirely client-side.
For an application developer, the application flow is similar to the typical client-server flow used by centralized sign in services (e.g., OAuth). However, with Stacks auth, the authentication flow happens entirely client-side.
A decentralized application and [the Blockstack App](https://github.com/blockstack/ux/tree/master/packages/app) communicate during the authentication flow by passing back and forth two tokens. The requesting application sends the Blockstack App an `authRequest` token. Once a user approves a sign-in, the Blockstack App responds to the application with an `authResponse` token. These tokens are <ahref="https://jwt.io/"target="\_blank">JSON Web Tokens</a>, and they are passed via URL query strings.
![](/images/app-sign-in.png)
When a user chooses to authenticate a decentralized application, it calls the `doOpenAuth()` method which sends an `authRequest` to the Blockstack App. Blockstack passes the token in via a URL query string in the `authRequest` parameter:
When a user chooses to authenticate a decentralized application, it calls the `doOpenAuth()` method which sends an `authRequest` to the Blockstack App. Stacks auth passes the token in via a URL query string in the `authRequest` parameter:
JWT libraries with support for this signing algorithm.
-> The Blockstack JWT implementation is different from other implementations because of the underlying cryptography we employ. There are libraries in [Javascript](https://github.com/blockstack/jsontokens-js) and [Ruby](https://github.com/blockstack/ruby-jwt-blockstack) available on the Blockstack Github to allow you to work with these tokens.
-> The Stacks JWT implementation is different from other implementations because of the underlying cryptography we employ. There are libraries in [Javascript](https://github.com/blockstack/jsontokens-js) and [Ruby](https://github.com/blockstack/ruby-jwt-blockstack) available on the Blockstack Github to allow you to work with these tokens.
### Example: authRequest payload schema
@ -163,7 +163,7 @@ const responsePayload = {
private_key, // encrypted private key payload
public_keys, // single entry array with public key
profile, // profile object or null if passed by profile_url
username, // blockstack username (if any)
username, // Stacks username (if any)
core_token, // encrypted core token payload
email, // email if email scope is requested & email available
@ -20,7 +20,7 @@ decentralized network, built on the Stacks blockchain, for [authentication](/aut
and [backend logic](/data-storage/indexing-overview). Just like Bitcoin, a decentralized network of applications is accessible to
anyone and not controlled by any central authority.
To learn more about the Blockstack network and decentralization, read the [Blockstack overview](/ecosystem/overview).
To learn more about the Stacks network and decentralization, read the [Stacks overview](/ecosystem/overview).
### User-owned data
@ -69,7 +69,7 @@ documentation.
### Smart contracts
You can use smart contracts to decentralize your app’s backend logic, making it open and permissionless. Smart contracts
on Blockstack are written in the [Clarity language](https://clarity-lang.org). View the smart contracts documentation or get started with a tutorial.
on the Stacks blockchain are written in the [Clarity language](https://clarity-lang.org). View the smart contracts documentation or get started with a tutorial.
Collections support data portability between applications. Blockstack supplies a `Contact` collection for use by Blockstack applications. Developers can create additional collection types, use them in their own applications, and publish them so other developers can make use of them too.
Collections support data portability between applications. Stacks supplies a `Contact` collection for use by Stacks applications. Developers can create additional collection types, use them in their own applications, and publish them so other developers can make use of them too.
In this section, you learn the coding guidelines for creating and publishing a new `Collection` type. The following topics are included:
@ -41,7 +41,7 @@ This section demonstrates how to create a new collection type using Typescript.
4. Give your `Collection` a unique identifier.
The Blockstack Collection frameworks uses this identifier to place Collection data into a corresponding Gaia storage bucket.
The Stacks Collection frameworks uses this identifier to place Collection data into a corresponding Gaia storage bucket.
```js
static get collectionName(): string {
@ -49,7 +49,7 @@ This section demonstrates how to create a new collection type using Typescript.
}
```
!> While you must specify a unique identifier, the Blockstack platform does not currently enforce uniqueness. If your `Collection` type shares the same identifier as another type, it will lead to data corruption for the user. In the future, the Blockstack platform will enforce unique collection names.
!> While you must specify a unique identifier, the Stacks platform does not currently enforce uniqueness. If your `Collection` type shares the same identifier as another type, it will lead to data corruption for the user. In the future, the Stacks platform will enforce unique collection names.
@ -5,7 +5,7 @@ description: Learn about the beta release of Collections and how you can start u
## Introduction
Collections is the feature designed to make data portable among Blockstack applications. Sharing is accomplished by
Collections is the feature designed to make data portable among Stacks applications. Sharing is accomplished by
storing a user's data in a standardized format at a known, Gaia storage location. Collections associate user data with
a user's decentralized ID. When users move among apps, the same data is available to each application the user authorizes.
@ -18,13 +18,13 @@ particular. The following topics are covered:
## Understand how collections work
One of Blockstack's goals is to give users true data ownership by enabling _data portability_. Data portability allows
One of the goals of the Stacks ecosystem is to give users true data ownership by enabling _data portability_. Data portability allows
users to login with their digital ID on any app and have access to the same data. For example, if a user adds a photo of
a Hawaiian vacation in one app, that photo enters the user's data pool. Then, when the user opens a second app, that
same photo is available to the second app because the user data, including the photo, is shared via the user's
decentralized ID.
How do collections work? Blockstack builds a library containing commonly used data schemes. Developers use these classes
How do collections work? Stacks provides a library containing commonly used data schemes. Developers use these classes
and objects instead of creating their own, unique data schemes. Using a class from the collections library guarantees
class data is stored in Gaia in that format; And, when retrieved, guarantees the same format is returned. This
pre-release provides the `Contact` collection. A contact schema produces this structure:
@ -43,15 +43,15 @@ pre-release provides the `Contact` collection. A contact schema produces this st
A collection schema is neither validated or enforced. The goal is to incentivize collection use rather that enforce use.
Because malicious apps or apps with poor security controls may damage user data, Blockstack believes collections should
include the ability for users to roll-back changes. For this reason, Blockstack supports an event log and rollback
Because malicious apps or apps with poor security controls may damage user data, Stacks collections should
include the ability for users to roll-back changes. For this reason, Stacks supports an event log and rollback
mechanisms in collections. To support this rollback in the pre-release, collections data store is conceptually an event
log. Every data write an app makes is stored as a separate file. By placing data in files it ensures that data is never
lost and files can be returned back to any previous state.
##### The Future of Collections Envisioned
Blockstack believes that collections should enable true data portability across applications for each decentralized ID.
Stacks collections should enable true data portability across applications for each decentralized ID.
The goal is to develop simple user interfaces to allow users to manage of application access and permissions to collection
data. For example, in the future, users can rollback data to previous versions using management interfaces.
For developers, collections can incentivize user adoption by reducing user friction. Users can easily try new apps and
@ -98,7 +98,7 @@ If you have `npm` installed, do the following to run the Contact Manager demo ap
The system starts the application and launches it in your browser at 127.0.0.1:3000
9. Choose **Sign In with Blockstack**.
9. Choose **Sign In with Stacks Auth**.
The internet browser will display this pop-up
@ -131,7 +131,7 @@ If you have `npm` installed, do the following to run the Contact Manager demo ap
## How to add the Contact collections to your DApp
In this section, you learn how to add `Contact` collection functionality to an existing application. Before beginning, make sure your application is using Blockstack auth and is storing data with Gaia. To start using the `Contact` collection in your Blockstack app, do the following:
In this section, you learn how to add `Contact` collection functionality to an existing application. Before beginning, make sure your application is using Stacks auth and is storing data with Gaia. To start using the `Contact` collection in your Stacks app, do the following:
1. Change to the root directory of your app project.
2. Install the preview branch of the `blockstack.js`.
#### Step 2: Add authentication to your application
After your user logs in with Blockstack, you'll have some code to save the user's data in your applications `localStorage`. You'll want to use the same `UserSession` you configured with Radiks, which can be fetched from the `getConfig` method.
After your user logs in with Stacks Auth, you'll have some code to save the user's data in your applications `localStorage`. You'll want to use the same `UserSession` you configured with Radiks, which can be fetched from the `getConfig` method.
```jsx
import { User, getConfig } from 'radiks';
@ -201,7 +201,7 @@ Calling `User.createWithCurrentUser` does the following:
### Build and run your application
After you have added Radiks to your application, build and run the application. Test the application by logging in with your Blockstack ID. Create some data using the application. If you inspect the MongoDB database, you should see the encrypted data stored in the database.
After you have added Radiks to your application, build and run the application. Test the application by logging in with your Stacks ID. Create some data using the application. If you inspect the MongoDB database, you should see the encrypted data stored in the database.
You can specify the `mongoDBUrl` or the `maxLimit` option when initiating the Radiks server in your application.
Blockchains require consensus among large numbers of people, so they can be slow. Additionally, a blockchain is not designed to hold a lot of data. This means using a blockchain for every bit of data a user might write and store is expensive. For example, imagine if an application were storing every tweet in the chain.
Blockstack addresses blockchain performance problems using a layered approach. The base layer consists of the Stacks blockchain and the Blockstack Naming System (BNS). The blockchain governs ownership of identities in the Blockstack network. Identities can be names such as domain names, usernames, or application names.
The Stacks blockchain addresses performance problems using a layered approach. The base layer consists of the Stacks blockchain and the Blockchain Naming System (BNS). The blockchain governs ownership of identities in the Stacks network. Identities can be names such as domain names, usernames, or application names.
When an identity is created, its creation is recorded in the Stacks blockchain. Identities make up the primary data stored into the Stacks blockchain. These identities correspond to routing data in the OSI stack. The routing data is stored in the Atlas Peer Network, the second layer. Every core node that joins the Blockstack Network is able to obtain an entire copy of this routing data. Blockstack uses the routing data to associate identities (domain names, user names, and application names) with a particular storage location in the final layer, the Gaia Storage System.
When an identity is created, its creation is recorded in the Stacks blockchain. Identities make up the primary data stored into the Stacks blockchain. These identities correspond to routing data in the OSI stack. The routing data is stored in the Atlas Peer Network, the second layer. Every core node that joins the Stacks Network is able to obtain an entire copy of this routing data. Stacks uses the routing data to associate identities (domain names, user names, and application names) with a particular storage location in the final layer, the Gaia Storage System.
A Gaia Storage System consists of a _hub service_ and storage resource on a cloud software provider. The storage provider can be any commercial provider such as Azure, DigitalOcean, Amazon EC2, and so forth. Typically the compute resource and the storage resource reside same cloud vendor, though this is not a requirement. Gaia currently has driver support for S3 and Azure Blob Storage, but the driver model allows for other backend support as well.
@ -33,7 +33,7 @@ Gaia stores data as a simple key-value store. When an identity is created, a cor
the authentication process gives the application the URL of a Gaia hub, which
then writes to storage on behalf of that user.
Within Blockstack, then, the Stacks blockchain stores only identity data. Data created by the actions of an identity is stored in a Gaia Storage System. Each user has profile data. When a user interacts with a decentralized dApp that application stores application data on behalf of the user. Because Gaia stores user and application data off the blockchain, a Blockstack DApp is typically more performant than DApps created on other blockchains.
The Stacks blockchain stores only identity data. Data created by the actions of an identity is stored in a Gaia Storage System. Each user has profile data. When a user interacts with a decentralized dApp that application stores application data on behalf of the user. Because Gaia stores user and application data off the blockchain, a Stacks DApp is typically more performant than DApps created on other blockchains.
The Blockstack Platform stores application data in the Gaia Storage System. Transactional metadata is stored on the
Blockstack blockchain and user application data is stored in Gaia storage. Storing data off of the blockchain ensures
that Blockstack applications can provide users with high performance and high availability for data reads and writes
The Stacks Platform stores application data in the Gaia Storage System. Transactional metadata is stored on the
Stacks blockchain and user application data is stored in Gaia storage. Storing data off of the blockchain ensures
that Stacks applications can provide users with high performance and high availability for data reads and writes
without introducing central trust parties.
-> Blockstack Gaia Storage APIs and on-disk format will change in upcoming pre-releases breaking backward compatibility. File encryption is currently opt-in on a file by file basis. Certain storage features such as collections are not implemented in the current version. These features will be rolled out in future updates.
-> Stacks Gaia Storage APIs and on-disk format will change in upcoming pre-releases breaking backward compatibility. File encryption is currently opt-in on a file by file basis. Certain storage features such as collections are not implemented in the current version. These features will be rolled out in future updates.
## How data is stored
@ -91,7 +91,7 @@ the [`publish_data` scope](https://blockstack.github.io/stacks.js/enums/authscop
```jsx
const options = {
user: 'ryan.id', // the Blockstack ID of the user for which to lookup the file
user: 'ryan.id', // the Stacks ID of the user for which to lookup the file
app: 'https://BlockstackApp.com', // origin of the app this file is stored for
description: Learn about Blockstack and decentralization
description: Learn about Stacks and decentralization
icon: BlockstackIcon
---
# Overview of Blockstack
# Overview of Stacks
Blockstack is a full-stack decentralized computing network that enables a new generation of applications where developers and users can interact fairly and securely. Blockstack uses blockchain technology to build protocols and developer tools designed to enable a fair and open Internet that returns digital rights to developers and consumers.
Stacks is a full-stack decentralized computing network that enables a new generation of applications where developers and users can interact fairly and securely. Stacks uses blockchain technology to build protocols and developer tools designed to enable a fair and open Internet that returns digital rights to developers and consumers.
## What is the Blockstack Ecosystem?
## What is the Stacks Ecosystem?
The Blockstack Ecosystem is the legal entities and community structures that support the Blockstack technology, the apps that rely on it, and the people that work with it. The ecosystem’s mission is to foster an open and decentralized Internet that establishes and protects privacy, security and freedom for all users.
The Stacks Ecosystem is the legal entities and community structures that support the Stacks technology, the apps that rely on it, and the people that work with it. The ecosystem’s mission is to foster an open and decentralized Internet that establishes and protects privacy, security and freedom for all users.
The documentation on this site focuses on the technologies produced by three entities in the ecosystem.
### Blockstack Public Benefit Corp (PBC)
Blockstack Public Benefit Corp. (PBC) started development of the Blockstack
Blockstack Public Benefit Corp. (PBC) started development of the Stacks
platform in 2014 and launched an alpha of the platform in early 2017. The
platform’s development philosophy followed two simple principles. First, create
backend facilities that allow blockchain applications to be both performant and
@ -25,13 +25,13 @@ developers to:
- Build a blockchain application in any Javascript framework. The platform does not require learning a new programming language or extending an existing application stack.
- Use well-defined REST endpoints that simplify and encapsulate the blockchain backend. The Blockstack Javascript API reduces blockchain-backed applications to familiar `GET` and `PUT` operations.
- Use well-defined REST endpoints that simplify and encapsulate the blockchain backend. The Stacks Javascript API reduces blockchain-backed applications to familiar `GET` and `PUT` operations.
- Access the Blockstack’s Naming System (BNS). The system has over 70K users that can immediately start using your application.
- Scale quickly to large, performant production systems. Blockstack’s Gaia storage system gives fast, scalable performance on a level comparable to Amazon S3, Google Drive, or Azure.
- Scale quickly to large, performant production systems. Stacks’s Gaia storage system gives fast, scalable performance on a level comparable to Amazon S3, Google Drive, or Azure.
Using Blockstack’s technology developers can start building immediately on the
Using Stacks’s technology developers can start building immediately on the
blockchain with the knowledge you have today. You won’t need to spend time or
effort developing expertise in specialized languages or technologies.
description: Learn about the native token of Blockstack
description: Learn about the native token of Stacks
icon: StacksIcon
---
@ -8,7 +8,7 @@ icon: StacksIcon
Stacks is the name of a token developed by Blockstack Token LLC in 2017 and
activated in the third quarter of 2018. This page discusses a brief history of
the Stacks token and deployment on the Blockstack network as well as the current
the Stacks token and deployment on the Stacks network as well as the current
role of the Stacks token.
If you are a developer interested in the specific technical changes related to
@ -16,7 +16,7 @@ the 2018 launch, see the [announcement in the Blockstack forum](https://forum.bl
## A brief history of the Stacks token
In 2017 Blockstack did a token sale. Participants became token holders when they
In 2017 Blockstack PBC did a token sale. Participants became token holders when they
received allocations of Stacks tokens in the genesis block. A genesis block is
the first block of a blockchain.
@ -33,7 +33,7 @@ draft state, token holders were in a lock down period.
The initial block in the Stacks blockchain V1 allocates 1.32 billion
tokens. The launch is the culmination of two year’s hard work across the greater
Blockstack community. With the launch, Stacks tokens unlock for accredited token
Stacks community. With the launch, Stacks tokens unlock for accredited token
holders under a predetermined unlocking schedule. The events on the unlocking
schedule are the same for each investor, **the dates of these events** depend on the
holder's purchase date.
@ -44,7 +44,7 @@ The genesis block launch makes possible the following interactions:
- Token holders can purchase names and namespaces with the Stacks token. Previously, names and namespaces required the purchaser to hold Bitcoin. Initially, this process relies on the Blockstack command-line interface (CLI).
- Application developers can earn Stacks by building an application on the Blockstack ecosystem.
- Application developers can earn Stacks by building an application on the Stacks ecosystem.
- Any Stacks tokens held at the time of launch or after remain usable under the Stacks Blockchain platform.
@ -5,8 +5,8 @@ description: Learn some common methods for deploying your application.
## Introduction
Blockstack applications are web applications that authenticate users with Blockstack Auth and store data with Gaia.
Both of these technologies can be accessed on the client side. As such, Blockstack apps tend to be simple in design and
Stacks applications are web applications that authenticate users with Stacks Auth and store data with Gaia.
Both of these technologies can be accessed on the client side. As such, Stacks apps tend to be simple in design and
operation, since in many cases, they don’t have to host anything besides the application’s assets.
## Where to deploy your application
@ -17,7 +17,7 @@ Before users can interact with your application, you must deploy it on a server
- Build your application site for deployment.
- Copy your generated application files to your production server.
If you first populated your application with the Blockstack application generator, your application contains the starting blocks for configuring, building, and deploying your app. For example, the React template builds out a scaffolding with the following building blocks.
If you first populated your application with the Stacks application generator, your application contains the starting blocks for configuring, building, and deploying your app. For example, the React template builds out a scaffolding with the following building blocks.
@ -30,11 +30,11 @@ If you first populated your application with the Blockstack application generato
If you use the generator to build Javascript or Vue scaffolding, your project configuration files will be different.
Regardless of which scaffolding you use, you must customize and extend this basic scaffolding as needed by your application. For example, you may want to add more properties to the `manifest.json` file. Since every application is different, Blockstack cannot give you specific instructions on how to do this. The steps you take are specific to your application.
Regardless of which scaffolding you use, you must customize and extend this basic scaffolding as needed by your application. For example, you may want to add more properties to the `manifest.json` file. Since every application is different, Stacks Auth cannot give you specific instructions on how to do this. The steps you take are specific to your application.
## Blockstack Authentication and deployment
## Stacks Authentication and deployment
When your application authenticates users with Blockstack, your DApp at one URL requests a resource (an identity) from another DApp, the Blockstack Browser. A request for a resource outside of the origin (your new website) is called as a _cross-origin request_(CORs). Getting data in this manner can be risky, so you must configure your website security to allow interactions across origins.
When your application authenticates users with Stacks, your DApp at one URL requests a resource (an identity) from another DApp, the Blockstack Browser. A request for a resource outside of the origin (your new website) is called as a _cross-origin request_(CORs). Getting data in this manner can be risky, so you must configure your website security to allow interactions across origins.
You can think of CORS interactions as an apartment building with Security. For example, if you need to borrow a ladder, you could ask a neighbor in your building who has one. Security would likely not have a problem with this request (i.e., same-origin, your building). If you needed a particular tool, however, and you ordered it delivered from an online hardware store (i.e., cross-origin, another site), Security may request identification before allowing the delivery man into the apartment building. (Credit: [Codecademy](https://www.codecademy.com/articles/what-is-cors))
@ -50,4 +50,4 @@ Consult the documentation for your hosting service to learn how to configure COR
## Deployment and Radiks
If you are deploying a Blockstack application that uses Radiks, your deployment includes a server and a database component. You must take this into account when deploying your application. You may want to choose a service such as Heroku or Digital Ocean if your app uses Radiks.
If you are deploying a Stacks application that uses Radiks, your deployment includes a server and a database component. You must take this into account when deploying your application. You may want to choose a service such as Heroku or Digital Ocean if your app uses Radiks.
description: Learn how to sign transactions using Blockstack Connect
description: Learn how to sign transactions using Stacks Connect.
experience: advanced
duration: 30 minutes
tags:
@ -12,7 +12,7 @@ images:
## Introduction
With Blockstack Connect, you can interact with the Stacks 2.0 blockchain, empowering your users to sign transactions and interact with smart contracts.
With Stacks Connect, you can interact with the Stacks 2.0 blockchain, empowering your users to sign transactions and interact with smart contracts.
This functionality currently operates on [the Stacks 2.0 Testnet](http://testnet.blockstack.org/). The user interface has been designed with developers in mind and prominently displays debug information. STX testnet tokens for paying transaction fees can be obtained for free with [the testnet faucet](https://testnet.blockstack.org/faucet). We will update this functionality and experience for mainnet upon its release.
Clarity, Blockstack's smart contracting language, is based on [LISP](<https://en.wikipedia.org/wiki/Lisp_(programming_language)>). Clarity is an interpreted language, and [decidable](https://en.wikipedia.org/wiki/Recursive_language). In this tutorial, you will learn how to test Clarity and how use [Mocha](https://mochajs.org/) to test Clarity contracts while you develop them.
Clarity, the smart contracting language, is based on [LISP](<https://en.wikipedia.org/wiki/Lisp_(programming_language)>). Clarity is an interpreted language, and [decidable](https://en.wikipedia.org/wiki/Recursive_language). In this tutorial, you will learn how to test Clarity and how use [Mocha](https://mochajs.org/) to test Clarity contracts while you develop them.
- Have a working Clarity starter project
- Understand how to test Clarity code using `.ts` files and Mocha.
@ -53,10 +53,10 @@ description: Helpful tips for getting a core node up and running.
- Check `dmesg` for TCP SYN flooding. The solution here is to kill and restart the node.
- To mitigate, install a rate-limiting proxy HTTP server in front of the node. We have a sample config for `nginx` [here](https://github.com/blockstack/atlas/blob/master/public_fleet/node/default).
### No other Blockstack nodes contact my node
### No other Stacks nodes contact my node
- Verify that your IP address is publicly-routable, and that peers can communicate on TCP:6264
### People are attacking my Bitcoin node
- Stick an `nginx` reverse proxy in front of your `bitcoind` node, and use our [nginx](https://github.com/blockstack/atlas/tree/master/public_fleet/bitcoind) scripts to limit API access to only the JSON-RPC methods Blockstack actually needs. Better yet, do what we do---build a statically-linked `bitcoind` binary from source that simply omits all of the RPC methods except the ones listed in the linked config file.
- Stick an `nginx` reverse proxy in front of your `bitcoind` node, and use our [nginx](https://github.com/blockstack/atlas/tree/master/public_fleet/bitcoind) scripts to limit API access to only the JSON-RPC methods Stacks actually needs. Better yet, do what we do---build a statically-linked `bitcoind` binary from source that simply omits all of the RPC methods except the ones listed in the linked config file.
@ -43,7 +43,7 @@ Smart contracts on the Stacks 2.0 blockchain are written in a new programming la
- **Security**: The Clarity language allows users to supply their own conditions for transactions that ensure that a contract may never unexpectedly transfer a token owned by a user.
- **No compiler**: Contracts written in Clarity are broadcasted on the blockchain exactly as they are written by developers. This ensures that the code developers wrote, analyzed, and tested, is exactly what gets executed.
-> The [Clarity open-source project](https://clarity-lang.org/) is supported by Blockstack and Algorand.
-> The [Clarity open-source project](https://clarity-lang.org/) is supported by Stacks and Algorand.
@ -5,6 +5,6 @@ description: Get familiar with the old Stacks 1.0 architecture
## Information
Stacks 1.0 is an older blockchain architecture Blockstack.
Stacks 1.0 is an older blockchain architecture Stacks.
!> Stacks 1.0 architecture is not compatible with Stacks 2.0. The information in this chapter is in reference to **deprecated** implementation details.
description: Learn about the format of transactions used for name operations in the Blockstack network.
description: Learn about the format of transactions used for name operations in the Stacks network.
---
## Introduction
This page is for organizations who want to be able to create and send name operation transactions to the blockchain(s) Blockstack supports.
This page is for organizations who want to be able to create and send name operation transactions to the blockchain(s) Stacks supports.
It describes the transaction formats for the Bitcoin blockchain.
## Transaction format
Each Bitcoin transaction for Blockstack contains signatures from two sets of keys: the name owner, and the payer. The owner `scriptSig` and `scriptPubKey` fields are generated from the key(s) that own the given name. The payer `scriptSig` and `scriptPubKey` fields are used to _subsidize_ the operation. The owner keys do not pay for any operations; the owner keys only control the minimum amount of BTC required to make the transaction standard. The payer keys only pay for the transaction's fees, and (when required) they pay the name fee.
Each Bitcoin transaction for Stacks contains signatures from two sets of keys: the name owner, and the payer. The owner `scriptSig` and `scriptPubKey` fields are generated from the key(s) that own the given name. The payer `scriptSig` and `scriptPubKey` fields are used to _subsidize_ the operation. The owner keys do not pay for any operations; the owner keys only control the minimum amount of BTC required to make the transaction standard. The payer keys only pay for the transaction's fees, and (when required) they pay the name fee.
This construction is meant to allow the payer to be wholly separate from the owner. The principal that owns the name can fund their own transactions, or they can create a signed transaction that carries out the desired operation and request some other principal (e.g. a parent organization) to actually pay for and broadcast the transaction.
@ -32,7 +32,7 @@ Different operations require different outputs.
## Payload Format
Each Blockstack transaction in Bitcoin describes the name operation within an `OP_RETURN` output. It encodes name ownership, name fees, and payments as `scriptPubKey` outputs. The specific operations are described below.
Each Stacks transaction in Bitcoin describes the name operation within an `OP_RETURN` output. It encodes name ownership, name fees, and payments as `scriptPubKey` outputs. The specific operations are described below.
Each `OP_RETURN` payload _always_ starts with the two-byte string `id` (called the "magic" bytes in this document), followed by a one-byte `op` that describes the operation.
@ -296,7 +296,7 @@ Outputs:
Notes:
- The payer key should be an owner key for an existing name, since Blockstack users can subscribe to announcements from specific name-owners.
- The payer key should be an owner key for an existing name, since Stacks users can subscribe to announcements from specific name-owners.
@ -47,7 +47,7 @@ In this task you create a **Space** which is where Gaia stores your files.
~> Choose a region that is both geographically close to you and that supports spaces. Currently, <strong>San Francisco</strong>, <strong>New York</strong>, <strong>Amsterdam</strong>, and <strong>Singapore</strong> support spaces.
The geographical location of your server impacts latency for storing data.
You select a region close to you so that when you use Blockstack apps,
You select a region close to you so that when you use Stacks apps,
storing data is quicker.
3. Scroll down to **Finalize and Create**.
@ -171,7 +171,7 @@ In this task, you add a droplet to your account. The droplet is a droplet is a c
~> Choose a region that is both geographically close to you and that supports spaces. Currently, <strong>San Francisco</strong>, <strong>New York</strong>, <strong>Amsterdam</strong>, and <strong>Singapore</strong> support spaces.
The geographical location of your server impacts latency for storing data. You select a region close to you so that when you use Blockstack apps, storing data is quicker.
The geographical location of your server impacts latency for storing data. You select a region close to you so that when you use Stacks apps, storing data is quicker.
8. If you are using SSH, scroll to the **Add your SSH key** section and choose an SSH key to use. Otherwise,
@ -365,7 +365,7 @@ You should have the console open as `root` on your Droplet. In this section, you
14. Ensure the `proofsRequired` value is set to the number `0` (zero).
This will allow Blockstack user to write to your Gaia hub, without any social proofs required. You can change this later on, and do other things to lock-down this Gaia hub to just yourself, but that is outside the scope of this document.
This will allow Stacks user to write to your Gaia hub, without any social proofs required. You can change this later on, and do other things to lock-down this Gaia hub to just yourself, but that is outside the scope of this document.
At this point, the `json.config` file should be completed and appear similar to the following &—; but with your values.