SlideShare une entreprise Scribd logo
1  sur  65
Télécharger pour lire hors ligne
NEAR 101
An introductory workshop
for web developers
near.org
Workshop Preparation
Please complete the following steps before the workshop starts:
- [5 min] Install Node.js locally
- [2 min] Install NEAR CLI locally
- [3 min] Create a TestNet account on NEAR Protocol
If you have time, feel free to complete the following steps as well:
- Read and watch a few of the key articles about the NEAR platform:
- The Beginner’s Guide to NEAR Protocol
- Blockchain Infrastructure Landscape
- Watch Blockchain 101
- Deploy the Guestbook sample application (Gitpod or locally)
Available Recordings
- crowdcast.io/e/hacktherainbow/12
- crowdcast.io/e/hacktherainbow/6
- crowdcast.io/e/near-101---v0-4
- crowdcast.io/e/near-101---v0-3
- crowdcast.io/e/near-101---v0-2
- crowdcast.io/e/near-101---v0-1
web2 → web3
Coming from web2 to web3: a primer
web2 web3
topology client-server client-(server+blockchain)
app dev technology - JS frontend
- multiple backend techs
- JS frontend
- Rust and AssemblyScript (like JS/TS) on NEAR
security accounts
- username / password
- oAuth
accounts
asymmetric key pairs (public and private keys)
servers
- AWS / GCP / Azure
servers
← web2 + consensus (PoW, PoS, etc)
key performance fast. cheap. data is “native” unassailable. permanent. money is "native"
Dissecting an
Application
Guest Book
- there are 2 main folders in the project:
- assembly contains the smart contract and tests
- src contains the application’s UX and tests
- there is another folder to be aware of:
- neardev contains contract account details
Guest Book
Guest Book (backend)
Contract Data Model : assembly/model.ts
- PostedMessage is a serializable class with three
attributes:
- premium to flag messages with attached
NEAR tokens
- sender to track the signer of the guest
book message
- text to hold the guest book message
- messages is a collection of guest book messages
stored as a PersistentVector of
PostedMessage objects
note: @nearBindgen marks the class as serializable
Contract Behavior : assembly/main.ts
- MESSAGE_LIMIT is used to avoid unbounded calls
(ie. potentially expensive) to retrieve guest book
messages from storage
- two public functions are exposed on the contract:
- addMessage()
- getMessages()
Guest Book (backend)
Guest Book (frontend)
Network Connection : src/config.js
- data and endpoints required to connect to the
NEAR network
- connection information is included for MainNet,
TestNet and BetaNet as well as the default
LocalNet configuration
Configuration : src/index.js
- configure connection to NEAR network
- configure contract interface by injecting
wallet connection and wiring up both
contract methods
Guest Book (frontend)
Guest Book (frontend)
Authentication : src/App.js
- NEAR Wallet is used for authentication
- near-api-js exposes two related methods
- wallet.requestSignIn()
- wallet.signOut()
note: useCallback() is a React Hook
CRUD : src/App.js
- add a message and, once complete, get a list of
all messages (up to MESSAGE_LIMIT)
Guest Book (frontend)
Monitoring the application ...
http post https://rpc.testnet.near.org 
jsonrpc=2.0 id=dontcare
method=query params:='{
"request_type": "view_state",
"finality": "final",
"account_id": "test",
"prefix_base64": "U1RBVEU="
}’
And, using the watch command and some
JSON formatting with jq, automatically
refresh a convenient view while we use
the Guestbook example. Here’s how.
Also see here for our JSON RPC API docs
https://docs.near.org/docs/interaction/rpc
Guest Book
NEAR has two paths for extension
dApp UX development
- Use near-api-js to connect to
NEAR, manage accounts, call
contract methods and more
- Use JSON-RPC API to
communicate with NEAR from
any context (other than JS / TS)
- Manage devops with NEAR CLI
dApp Contract Development
- Use near-sdk-as to build
contracts using AssemblyScript
- Use near-sdk-rs to build
contracts using Rust
- Compose deployed contracts
using cross-contract calls
Runtime Layer
state storage
virtual
machine
code
load
apply
result
read write
Your dApp
send
receive
Blockchain Layer
RPC Interface
- P2P network
- Consensus
- Block Storage
near-api-js
contracts
near-sdk-as
near-sdk-rs
deploy
NEAR Protocol for Developers
Lifecycle of a transaction
Runtime Layer
state storage
virtual
machine
code
load
apply
result
read write
Your dApp
send
receive
Blockchain Layer
RPC Interface
- P2P network
- Consensus
- Block Storage
near-api-js
contracts
near-sdk-as
near-sdk-rs
1
2 3 4
5
6
7
deploy
write
read`
Runtime Layer
state storage
virtual
machine
code
load
apply
result
Your dApp
send
receive
Blockchain Layer
RPC Interface
- P2P network
- Consensus
- Block Storage
near-api-js
contracts
near-sdk-as
near-sdk-rs
deploy
Structure of the Sample Application
Build with NEAR
create-near-app
To start building on NEAR run the following* in your terminal:
npx create-near-app --help
* you must have Node.js installed to run npx
create-near-app
Choose templates for a frontend
and a contract:
Frontend
- JavaScript
- React
Contract
- AssemblyScript
- Rust
create-near-app
Choose templates for a frontend
and a contract:
Frontend
- JavaScript
- React
Contract
- AssemblyScript
- Rust
create-near-app
step #1
npx create-near-app banana
create-near-app
step #2
yarn dev
( or use npm run dev )
step #3
create-near-app
Sign in to NEAR Wallet
( 1 ) create new account
( 2 ) authorize your app
step #4
create-near-app
Change the message
( 1 ) edit the greeting
( 2 ) click Save
( 3 ) observe a → b
a b
b
step #5 … n
- discover
- where do we setup a connection to NEAR?
hint: search the code for keyStore
- where do we login to the NEAR Wallet?
hint: search the code for requestSignIn
- which lines of code wire up the contract to our JS context?
hint: search the code for viewMethods or changeMethods
- control
- try to reverse the greeting string before writing on chain
hint 1: search for storage.set … AssemblyScript supports common Array and String functions
hint 2: message.split('').reverse().join('')
create-near-app
Rust
Pros
- Mature, battle-hardened compiler
- Thriving ecosystem
- Real world use cases
- near-sdk-rs makes life easy
Cons
- Steeper learning curve
AssemblyScript
Pros
- Easier for prototyping
- Trivial for JS and TS devs to learn
- Smaller binaries in Wasm
- Binaries are easier to read / debug
Cons
- Current compiler is not stable
- Immature ecosystem
AssemblyScript has its place
Exploring the
Platform
NEAR Explorer
- Monitor all public network activity including
validator nodes, block height, recent
transactions and account details
NEAR Wallet
- When your users log in, they will be
presented with this screen where they can
create a new account (funded with 500
NEAR tokens) and setup a preferred
recovery method
- When users are redirected back to your app,
they can check towill find in LocalStorage a
copy of the private keys giving your app
FunctionCall access to their account
- In Chrome Developer Tools
1. Open LocalStorage in the Application tab
2. Storage key name will be something like
near-api-js:keystore:ACCOUNT:default
3. Storage value will be the account private key
4. And using the code snippets previously
presented, keys are accessible at this path
NEAR Wallet
NEAR CLI
- managing NEAR primitives:
- key stores
- accounts
- contracts
- wallets
- connection providers (RPC)
- generating key pairs locally
- creating transactions locally
- signing transactions locally
- sending transactions to the network
near-api-js
Library designed to connect to the NEAR platform from any JavaScript
execution context (server-side or client-side JS)
Client-side Server-side
near-api-js
Server-side
UnencryptedFileSystemKeyStore
Client-side
BrowserLocalStorageKeyStore
near-api-js
near-api-js
Your dApp
Examples at
near.dev
NEAR Explorer
NEAR Wallet
NEAR CLI
send
receive
RPC Interface
Blockchain
Layer
near-api-js uses JSON RPC API
near-api-js
Your dApp
Examples at
near.dev
NEAR Explorer
NEAR Wallet
NEAR CLI
send
receive
RPC Interface
Blockchain
Layer
near-api-js uses JSON RPC API
- syntax is identical to TypeScript
(AS is a strict subset of TS)
near-sdk-as
Library designed to support the development of valid NEAR contracts using
AssemblyScript (AS)
near-sdk-rs
- Best choice for high value contracts
Library designed to support the development of valid NEAR contracts using
Rust (RS)
Accounts
Transactions
& State
- human readable names that follow a DNS naming pattern
- may represent either a user, a contract or both
- maintain their own storage (via “storage staking” mechanism)
see https://docs.near.org/docs/concepts/account
see https://docs.near.org/docs/concepts/storage
NEAR Accounts
- composed of one or more Actions (currently there are 8 supported Actions)
- transactions that change state must be signed by a valid NEAR Account
- converted to “receipts” internally for cross-contract calls
see https://docs.near.org/docs/concepts/transaction
NEAR Transactions
- key-value store maintained as part of each NEAR account
- paid for using “storage staking” mechanism
see https://docs.near.org/docs/concepts/storage
NEAR State
Account ≈ Contract + State
Runtime Layer
state storage
virtual
machine
code
load
read write
Your dApp
send
receive
Blockchain Layer
RPC Interface
- P2P network
- Consensus
- Block Storage
near-api-js
contracts
near-sdk-as
near-sdk-rs
result
apply
Account ≈ Contract + State
Runtime Layer
state storage
virtual
machine
code
load
result
read write
apply
Account ≈ Contract + State
Runtime Layer
virtual
machine
code
load
metadata
result
read write
data
apply
state storage
Runtime Layer
result
apply
Account ≈ Contract + State
virtual
machine
code
load
read write
key value
STATE your contract code
message “hello world”
counter 3
prefix::identifier value at collection key
prefix::len PersistentVector length
prefix::last PersistentDeque last item
state storage
Scale with NEAR
Cross-contract calls enable scalability
shard.1.vm shard.2.vm
…
send
receive
cross-contract call cross-contract call
Your
dApp
Each NEAR account is assumed to live on its own shard, even if two accounts are physically
located in the same shard. This makes any method invocation from one contract to another a
“cross-contract call” (contract = account + state)
From the perspective of a contract developer, cross-contract calls look a lot like promises in
popular languages. They may or may not return a value, support the orchestration of call
chains and are capable of merging multiple calls into one.
cross-contract call
Cross-contract calls enable scalability
shard.1.vm shard.2.vm
send
receive
internal
NEAR supports two contexts for cross-contract calls
- External calls originate from your client-side code (ie. using near-api-js)
- Internal calls originate from your contract code (ie. using near-sdk-as)
Both external and internal cross-contract calls support “batch” calls and “promise” calls
Your
dApp
external
Exploring cross-contract calls
B A
C D
B & A are NOT
cross-contract
calls
C & D are
cross-contract
calls
Exploring cross-contract calls
B A
C D
B & A are NOT
cross-contract
calls
C & D are
cross-contract
calls
Exploring cross-contract calls
External “promise” calls which are used to invoke methods on multiple contracts using the
standard Promise interface
This example was taken from MDN (just assume the functions wrap near-api-js)
A
Exploring cross-contract calls
External “batch” calls are used to chain a series of Actions together to be executed on some
target account
B
Exploring cross-contract calls
Internal “batch” calls which are used to chain a series of Actions together to be executed on
some target account (including being applied to the current contract)
C
Exploring cross-contract calls
Internal “promise” calls which are used to invoke methods on other contracts (or recursively
on the current contract)
D
Testing
deploy
MainNet
simulation integration
deploy
TestNet
unit
build
contract
Our APIs in a landscape of testing
2
AssemblyScript
contracts
near-sdk-as
Rust
contracts
near-sdk-rs
1 3
unit testing
( as-pect )
unit testing
( #[test] )
Runtime
API
near-vm
CLI
blockchain
near-api-js
API
NEAR CLI
Contract testing is convenient and maturing
simulation
tests
integration
tests
- as-pect testing framework for
AssemblyScript
- uses rpec-style syntax with
support for exception paths
- full control over VM Context
(ie. signer_id, contract_id, etc)
AssemblyScript
contracts
near-sdk-as
unit testing
( as-pect )
internal
1
unit testing
( as-pect )
Contract testing is convenient and maturing
integration
tests
AssemblyScript
contracts
near-sdk-as
unit testing
( as-pect )
simulation
tests
- uses near-vm for parity
between Rust and
AssemblyScript contracts
( wraps the NEAR Protocol
on-chain virtual machine )
- allows fine-grained control of
economics configuration,
execution context and state
management
( simulate any genesis config,
account state and transaction
context )
simulation
near-vm
CLI
2
Contract testing is convenient and maturing
integration
tests
AssemblyScript
contracts
near-sdk-as
unit testing
( as-pect )
simulation
tests
- test cross-contract calls
- use any Node.js testing
framework ( ie. Jest, Ava )
- API supports all 8 NEAR action
types ( ie. CreateAccount )
- API is identical for both
AssemblyScript and Rust
( since we’re testing the Wasm
file at this point )
simulation
2
Runtime
API
Contract testing is convenient and maturing
integration
tests
AssemblyScript
contracts
near-sdk-as
unit testing
( as-pect )
simulation
tests
- deploy contracts to local node
(LocalNet) or TestNet
- invoke contract methods to
generate realistic resource
consumption estimates
- UX is identical for both
AssemblyScript and Rust
( since we’re testing the Wasm
file at this point )
simulation
3
NEAR CLI
Contract testing is convenient and maturing
integration
tests
AssemblyScript
contracts
near-sdk-as
unit testing
( as-pect )
simulation
tests
- test cross-contract calls
- use any JavaScript testing
framework ( ie. Jasmine )
- integrates closely with your
dApp UX
- API is identical for both
AssemblyScript and Rust
( since we’re testing via
near-api-js at this point )
simulation
3
near-api-js
API
Thank you!
share bit.ly / near-101
visit near.help
Touch base on Telegram
Discover us on Discord
Suggest topics on StackOverflow

Contenu connexe

Tendances

Barbican 1.0 - Open Source Key Management for OpenStack
Barbican 1.0 - Open Source Key Management for OpenStackBarbican 1.0 - Open Source Key Management for OpenStack
Barbican 1.0 - Open Source Key Management for OpenStackjarito030506
 
AWS temporary credentials challenges in prevention detection mitigation
AWS temporary credentials   challenges in prevention detection mitigationAWS temporary credentials   challenges in prevention detection mitigation
AWS temporary credentials challenges in prevention detection mitigationJohn Varghese
 
Europe Cloud Summit - Security hardening of public cloud services
Europe Cloud Summit - Security hardening of public cloud servicesEurope Cloud Summit - Security hardening of public cloud services
Europe Cloud Summit - Security hardening of public cloud servicesRuncy Oommen
 
Application DoS In Microservice Architectures
Application DoS In Microservice ArchitecturesApplication DoS In Microservice Architectures
Application DoS In Microservice ArchitecturesScott Behrens
 
Automating the VMware Virtual Datacenter
Automating the VMware Virtual DatacenterAutomating the VMware Virtual Datacenter
Automating the VMware Virtual DatacenterJosh Atwell
 
I Can See Clearly Now - Observing & understanding your Spring applications at...
I Can See Clearly Now - Observing & understanding your Spring applications at...I Can See Clearly Now - Observing & understanding your Spring applications at...
I Can See Clearly Now - Observing & understanding your Spring applications at...Joris Kuipers
 
Keynote - Cloudy Vision: How Cloud Integration Complicates Security
Keynote - Cloudy Vision: How Cloud Integration Complicates SecurityKeynote - Cloudy Vision: How Cloud Integration Complicates Security
Keynote - Cloudy Vision: How Cloud Integration Complicates SecurityCloudVillage
 
Practical Guide to Securing Kubernetes
Practical Guide to Securing KubernetesPractical Guide to Securing Kubernetes
Practical Guide to Securing KubernetesLacework
 
Lessons Learned Deploying Modern Cloud Systems in Highly Regulated Environments
Lessons Learned Deploying Modern Cloud Systems in Highly Regulated EnvironmentsLessons Learned Deploying Modern Cloud Systems in Highly Regulated Environments
Lessons Learned Deploying Modern Cloud Systems in Highly Regulated EnvironmentsPuma Security, LLC
 
Integrating Security into DevOps and CI / CD Environments - Pop-up Loft TLV 2017
Integrating Security into DevOps and CI / CD Environments - Pop-up Loft TLV 2017Integrating Security into DevOps and CI / CD Environments - Pop-up Loft TLV 2017
Integrating Security into DevOps and CI / CD Environments - Pop-up Loft TLV 2017Amazon Web Services
 
Building and running Spring Cloud-based microservices on AWS ECS
Building and running Spring Cloud-based microservices on AWS ECSBuilding and running Spring Cloud-based microservices on AWS ECS
Building and running Spring Cloud-based microservices on AWS ECSJoris Kuipers
 
(NET405) Build a Remote Access VPN Solution on AWS
(NET405) Build a Remote Access VPN Solution on AWS(NET405) Build a Remote Access VPN Solution on AWS
(NET405) Build a Remote Access VPN Solution on AWSAmazon Web Services
 
Container Runtime Security with Falco
Container Runtime Security with FalcoContainer Runtime Security with Falco
Container Runtime Security with FalcoMichael Ducy
 
Container Networking Deep Dive with Amazon ECS - CON401 - re:Invent 2017
Container Networking Deep Dive with Amazon ECS - CON401 - re:Invent 2017Container Networking Deep Dive with Amazon ECS - CON401 - re:Invent 2017
Container Networking Deep Dive with Amazon ECS - CON401 - re:Invent 2017Amazon Web Services
 
Debunking serverless myths
Debunking serverless mythsDebunking serverless myths
Debunking serverless mythsYan Cui
 
Rugged DevOps: Bridging Security and DevOps
Rugged DevOps: Bridging Security and DevOpsRugged DevOps: Bridging Security and DevOps
Rugged DevOps: Bridging Security and DevOpsJames Wickett
 
Cloud-native applications with Java and Kubernetes - Yehor Volkov
 Cloud-native applications with Java and Kubernetes - Yehor Volkov Cloud-native applications with Java and Kubernetes - Yehor Volkov
Cloud-native applications with Java and Kubernetes - Yehor VolkovKuberton
 
HashiTLS Demystifying Security Certs
HashiTLS Demystifying Security CertsHashiTLS Demystifying Security Certs
HashiTLS Demystifying Security CertsMitchell Pronschinske
 
LASCON 2013 - AWS CLoud HSM
LASCON 2013 - AWS CLoud HSM LASCON 2013 - AWS CLoud HSM
LASCON 2013 - AWS CLoud HSM Oleg Gryb
 

Tendances (20)

Barbican 1.0 - Open Source Key Management for OpenStack
Barbican 1.0 - Open Source Key Management for OpenStackBarbican 1.0 - Open Source Key Management for OpenStack
Barbican 1.0 - Open Source Key Management for OpenStack
 
AWS temporary credentials challenges in prevention detection mitigation
AWS temporary credentials   challenges in prevention detection mitigationAWS temporary credentials   challenges in prevention detection mitigation
AWS temporary credentials challenges in prevention detection mitigation
 
DDoS Protection
DDoS ProtectionDDoS Protection
DDoS Protection
 
Europe Cloud Summit - Security hardening of public cloud services
Europe Cloud Summit - Security hardening of public cloud servicesEurope Cloud Summit - Security hardening of public cloud services
Europe Cloud Summit - Security hardening of public cloud services
 
Application DoS In Microservice Architectures
Application DoS In Microservice ArchitecturesApplication DoS In Microservice Architectures
Application DoS In Microservice Architectures
 
Automating the VMware Virtual Datacenter
Automating the VMware Virtual DatacenterAutomating the VMware Virtual Datacenter
Automating the VMware Virtual Datacenter
 
I Can See Clearly Now - Observing & understanding your Spring applications at...
I Can See Clearly Now - Observing & understanding your Spring applications at...I Can See Clearly Now - Observing & understanding your Spring applications at...
I Can See Clearly Now - Observing & understanding your Spring applications at...
 
Keynote - Cloudy Vision: How Cloud Integration Complicates Security
Keynote - Cloudy Vision: How Cloud Integration Complicates SecurityKeynote - Cloudy Vision: How Cloud Integration Complicates Security
Keynote - Cloudy Vision: How Cloud Integration Complicates Security
 
Practical Guide to Securing Kubernetes
Practical Guide to Securing KubernetesPractical Guide to Securing Kubernetes
Practical Guide to Securing Kubernetes
 
Lessons Learned Deploying Modern Cloud Systems in Highly Regulated Environments
Lessons Learned Deploying Modern Cloud Systems in Highly Regulated EnvironmentsLessons Learned Deploying Modern Cloud Systems in Highly Regulated Environments
Lessons Learned Deploying Modern Cloud Systems in Highly Regulated Environments
 
Integrating Security into DevOps and CI / CD Environments - Pop-up Loft TLV 2017
Integrating Security into DevOps and CI / CD Environments - Pop-up Loft TLV 2017Integrating Security into DevOps and CI / CD Environments - Pop-up Loft TLV 2017
Integrating Security into DevOps and CI / CD Environments - Pop-up Loft TLV 2017
 
Building and running Spring Cloud-based microservices on AWS ECS
Building and running Spring Cloud-based microservices on AWS ECSBuilding and running Spring Cloud-based microservices on AWS ECS
Building and running Spring Cloud-based microservices on AWS ECS
 
(NET405) Build a Remote Access VPN Solution on AWS
(NET405) Build a Remote Access VPN Solution on AWS(NET405) Build a Remote Access VPN Solution on AWS
(NET405) Build a Remote Access VPN Solution on AWS
 
Container Runtime Security with Falco
Container Runtime Security with FalcoContainer Runtime Security with Falco
Container Runtime Security with Falco
 
Container Networking Deep Dive with Amazon ECS - CON401 - re:Invent 2017
Container Networking Deep Dive with Amazon ECS - CON401 - re:Invent 2017Container Networking Deep Dive with Amazon ECS - CON401 - re:Invent 2017
Container Networking Deep Dive with Amazon ECS - CON401 - re:Invent 2017
 
Debunking serverless myths
Debunking serverless mythsDebunking serverless myths
Debunking serverless myths
 
Rugged DevOps: Bridging Security and DevOps
Rugged DevOps: Bridging Security and DevOpsRugged DevOps: Bridging Security and DevOps
Rugged DevOps: Bridging Security and DevOps
 
Cloud-native applications with Java and Kubernetes - Yehor Volkov
 Cloud-native applications with Java and Kubernetes - Yehor Volkov Cloud-native applications with Java and Kubernetes - Yehor Volkov
Cloud-native applications with Java and Kubernetes - Yehor Volkov
 
HashiTLS Demystifying Security Certs
HashiTLS Demystifying Security CertsHashiTLS Demystifying Security Certs
HashiTLS Demystifying Security Certs
 
LASCON 2013 - AWS CLoud HSM
LASCON 2013 - AWS CLoud HSM LASCON 2013 - AWS CLoud HSM
LASCON 2013 - AWS CLoud HSM
 

Similaire à Encode x NEAR: Technical Overview of NEAR 1

NodeJS guide for beginners
NodeJS guide for beginnersNodeJS guide for beginners
NodeJS guide for beginnersEnoch Joshua
 
Deploying windows containers with kubernetes
Deploying windows containers with kubernetesDeploying windows containers with kubernetes
Deploying windows containers with kubernetesBen Hall
 
Encode x NEAR: Technical Overview of NEAR 1
Encode x NEAR: Technical Overview of NEAR 1Encode x NEAR: Technical Overview of NEAR 1
Encode x NEAR: Technical Overview of NEAR 1KlaraOrban
 
Scaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesScaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesRobert Lemke
 
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)QAware GmbH
 
"Hidden difficulties of debugger implementation for .NET WASM apps", Andrii R...
"Hidden difficulties of debugger implementation for .NET WASM apps", Andrii R..."Hidden difficulties of debugger implementation for .NET WASM apps", Andrii R...
"Hidden difficulties of debugger implementation for .NET WASM apps", Andrii R...Fwdays
 
Storage based on_openstack_mariocho
Storage based on_openstack_mariochoStorage based on_openstack_mariocho
Storage based on_openstack_mariochoMario Cho
 
Dockerization of Azure Platform
Dockerization of Azure PlatformDockerization of Azure Platform
Dockerization of Azure Platformnirajrules
 
Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy
Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy
Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy Jeffrey Holden
 
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...Patrick Chanezon
 
Fast Streaming into Clickhouse with Apache Pulsar
Fast Streaming into Clickhouse with Apache PulsarFast Streaming into Clickhouse with Apache Pulsar
Fast Streaming into Clickhouse with Apache PulsarTimothy Spann
 
OpenShift Meetup - Tokyo - Service Mesh and Serverless Overview
OpenShift Meetup - Tokyo - Service Mesh and Serverless OverviewOpenShift Meetup - Tokyo - Service Mesh and Serverless Overview
OpenShift Meetup - Tokyo - Service Mesh and Serverless OverviewMaría Angélica Bracho
 
Deploying your web application with AWS ElasticBeanstalk
Deploying your web application with AWS ElasticBeanstalkDeploying your web application with AWS ElasticBeanstalk
Deploying your web application with AWS ElasticBeanstalkJulien SIMON
 
Scaling Docker Containers using Kubernetes and Azure Container Service
Scaling Docker Containers using Kubernetes and Azure Container ServiceScaling Docker Containers using Kubernetes and Azure Container Service
Scaling Docker Containers using Kubernetes and Azure Container ServiceBen Hall
 
leewayhertz.com-How to build a dApp on Avalanche blockchain
leewayhertz.com-How to build a dApp on Avalanche blockchainleewayhertz.com-How to build a dApp on Avalanche blockchain
leewayhertz.com-How to build a dApp on Avalanche blockchainMdSaifulIslam289
 
Docker Java App with MariaDB – Deployment in Less than a Minute
Docker Java App with MariaDB – Deployment in Less than a MinuteDocker Java App with MariaDB – Deployment in Less than a Minute
Docker Java App with MariaDB – Deployment in Less than a Minutedchq
 
MongoDB.local DC 2018: MongoDB Ops Manager + Kubernetes
MongoDB.local DC 2018: MongoDB Ops Manager + KubernetesMongoDB.local DC 2018: MongoDB Ops Manager + Kubernetes
MongoDB.local DC 2018: MongoDB Ops Manager + KubernetesMongoDB
 
MongoDB.local Austin 2018: MongoDB Ops Manager + Kubernetes
MongoDB.local Austin 2018: MongoDB Ops Manager + KubernetesMongoDB.local Austin 2018: MongoDB Ops Manager + Kubernetes
MongoDB.local Austin 2018: MongoDB Ops Manager + KubernetesMongoDB
 
Blockchin Architecture on Azure-Part-3
Blockchin Architecture on Azure-Part-3Blockchin Architecture on Azure-Part-3
Blockchin Architecture on Azure-Part-3Mohammad Asif
 

Similaire à Encode x NEAR: Technical Overview of NEAR 1 (20)

NodeJS guide for beginners
NodeJS guide for beginnersNodeJS guide for beginners
NodeJS guide for beginners
 
Deploying windows containers with kubernetes
Deploying windows containers with kubernetesDeploying windows containers with kubernetes
Deploying windows containers with kubernetes
 
Encode x NEAR: Technical Overview of NEAR 1
Encode x NEAR: Technical Overview of NEAR 1Encode x NEAR: Technical Overview of NEAR 1
Encode x NEAR: Technical Overview of NEAR 1
 
Scaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesScaleable PHP Applications in Kubernetes
Scaleable PHP Applications in Kubernetes
 
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
 
"Hidden difficulties of debugger implementation for .NET WASM apps", Andrii R...
"Hidden difficulties of debugger implementation for .NET WASM apps", Andrii R..."Hidden difficulties of debugger implementation for .NET WASM apps", Andrii R...
"Hidden difficulties of debugger implementation for .NET WASM apps", Andrii R...
 
Storage based on_openstack_mariocho
Storage based on_openstack_mariochoStorage based on_openstack_mariocho
Storage based on_openstack_mariocho
 
Dockerization of Azure Platform
Dockerization of Azure PlatformDockerization of Azure Platform
Dockerization of Azure Platform
 
Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy
Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy
Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy
 
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
 
Fast Streaming into Clickhouse with Apache Pulsar
Fast Streaming into Clickhouse with Apache PulsarFast Streaming into Clickhouse with Apache Pulsar
Fast Streaming into Clickhouse with Apache Pulsar
 
OpenShift Meetup - Tokyo - Service Mesh and Serverless Overview
OpenShift Meetup - Tokyo - Service Mesh and Serverless OverviewOpenShift Meetup - Tokyo - Service Mesh and Serverless Overview
OpenShift Meetup - Tokyo - Service Mesh and Serverless Overview
 
Deploying your web application with AWS ElasticBeanstalk
Deploying your web application with AWS ElasticBeanstalkDeploying your web application with AWS ElasticBeanstalk
Deploying your web application with AWS ElasticBeanstalk
 
NodeJS @ ACS
NodeJS @ ACSNodeJS @ ACS
NodeJS @ ACS
 
Scaling Docker Containers using Kubernetes and Azure Container Service
Scaling Docker Containers using Kubernetes and Azure Container ServiceScaling Docker Containers using Kubernetes and Azure Container Service
Scaling Docker Containers using Kubernetes and Azure Container Service
 
leewayhertz.com-How to build a dApp on Avalanche blockchain
leewayhertz.com-How to build a dApp on Avalanche blockchainleewayhertz.com-How to build a dApp on Avalanche blockchain
leewayhertz.com-How to build a dApp on Avalanche blockchain
 
Docker Java App with MariaDB – Deployment in Less than a Minute
Docker Java App with MariaDB – Deployment in Less than a MinuteDocker Java App with MariaDB – Deployment in Less than a Minute
Docker Java App with MariaDB – Deployment in Less than a Minute
 
MongoDB.local DC 2018: MongoDB Ops Manager + Kubernetes
MongoDB.local DC 2018: MongoDB Ops Manager + KubernetesMongoDB.local DC 2018: MongoDB Ops Manager + Kubernetes
MongoDB.local DC 2018: MongoDB Ops Manager + Kubernetes
 
MongoDB.local Austin 2018: MongoDB Ops Manager + Kubernetes
MongoDB.local Austin 2018: MongoDB Ops Manager + KubernetesMongoDB.local Austin 2018: MongoDB Ops Manager + Kubernetes
MongoDB.local Austin 2018: MongoDB Ops Manager + Kubernetes
 
Blockchin Architecture on Azure-Part-3
Blockchin Architecture on Azure-Part-3Blockchin Architecture on Azure-Part-3
Blockchin Architecture on Azure-Part-3
 

Plus de KlaraOrban

Encode x Tezos Hack: Hands-on dApp Training
Encode x Tezos Hack: Hands-on dApp Training Encode x Tezos Hack: Hands-on dApp Training
Encode x Tezos Hack: Hands-on dApp Training KlaraOrban
 
Encode x Tezos: Building a dApp on Tezos
Encode x Tezos: Building a dApp on TezosEncode x Tezos: Building a dApp on Tezos
Encode x Tezos: Building a dApp on TezosKlaraOrban
 
Building Applications on Avalanche
Building Applications on AvalancheBuilding Applications on Avalanche
Building Applications on AvalancheKlaraOrban
 
Building on NEAR, Part 1
Building on NEAR, Part 1Building on NEAR, Part 1
Building on NEAR, Part 1KlaraOrban
 
Encode x The Graph: How to get involved with The Graph
Encode x The Graph: How to get involved with The GraphEncode x The Graph: How to get involved with The Graph
Encode x The Graph: How to get involved with The GraphKlaraOrban
 
Encode x NEAR: Intro to NEAR
Encode x NEAR: Intro to NEAREncode x NEAR: Intro to NEAR
Encode x NEAR: Intro to NEARKlaraOrban
 
Encode x The Graph: Curating and delegating on The Graph
Encode x The Graph: Curating and delegating on The GraphEncode x The Graph: Curating and delegating on The Graph
Encode x The Graph: Curating and delegating on The GraphKlaraOrban
 
Encode x NEAR: Intro to Blockchain
Encode x NEAR: Intro to BlockchainEncode x NEAR: Intro to Blockchain
Encode x NEAR: Intro to BlockchainKlaraOrban
 
bounties4bandits: Information event
bounties4bandits: Information eventbounties4bandits: Information event
bounties4bandits: Information eventKlaraOrban
 
Intro to avalanche
Intro to avalancheIntro to avalanche
Intro to avalancheKlaraOrban
 
Encode x Graph: The Data Economy
Encode x Graph: The Data EconomyEncode x Graph: The Data Economy
Encode x Graph: The Data EconomyKlaraOrban
 
Encode x BitDAO Intro Event
Encode x BitDAO Intro EventEncode x BitDAO Intro Event
Encode x BitDAO Intro EventKlaraOrban
 
Encode x The Graph - Introduction to the Graph
Encode x The Graph - Introduction to the GraphEncode x The Graph - Introduction to the Graph
Encode x The Graph - Introduction to the GraphKlaraOrban
 
Hack DeFi: DeFi with Wintermute
Hack DeFi: DeFi with WintermuteHack DeFi: DeFi with Wintermute
Hack DeFi: DeFi with WintermuteKlaraOrban
 
Hack DeFi Launch
Hack DeFi LaunchHack DeFi Launch
Hack DeFi LaunchKlaraOrban
 
Nft Hack Ideation Workshop
Nft Hack Ideation WorkshopNft Hack Ideation Workshop
Nft Hack Ideation WorkshopKlaraOrban
 
Best practices for canisters in rust
Best practices for canisters in rustBest practices for canisters in rust
Best practices for canisters in rustKlaraOrban
 
Decentralized possibilities with filecoin & ipfs_encode filecoin club
Decentralized possibilities with filecoin & ipfs_encode filecoin clubDecentralized possibilities with filecoin & ipfs_encode filecoin club
Decentralized possibilities with filecoin & ipfs_encode filecoin clubKlaraOrban
 
Encode x ICH: Intro to Building on the IC in Motoko
Encode x ICH: Intro to Building on the IC in MotokoEncode x ICH: Intro to Building on the IC in Motoko
Encode x ICH: Intro to Building on the IC in MotokoKlaraOrban
 
NFT Hack: Launch Event
NFT Hack: Launch Event NFT Hack: Launch Event
NFT Hack: Launch Event KlaraOrban
 

Plus de KlaraOrban (20)

Encode x Tezos Hack: Hands-on dApp Training
Encode x Tezos Hack: Hands-on dApp Training Encode x Tezos Hack: Hands-on dApp Training
Encode x Tezos Hack: Hands-on dApp Training
 
Encode x Tezos: Building a dApp on Tezos
Encode x Tezos: Building a dApp on TezosEncode x Tezos: Building a dApp on Tezos
Encode x Tezos: Building a dApp on Tezos
 
Building Applications on Avalanche
Building Applications on AvalancheBuilding Applications on Avalanche
Building Applications on Avalanche
 
Building on NEAR, Part 1
Building on NEAR, Part 1Building on NEAR, Part 1
Building on NEAR, Part 1
 
Encode x The Graph: How to get involved with The Graph
Encode x The Graph: How to get involved with The GraphEncode x The Graph: How to get involved with The Graph
Encode x The Graph: How to get involved with The Graph
 
Encode x NEAR: Intro to NEAR
Encode x NEAR: Intro to NEAREncode x NEAR: Intro to NEAR
Encode x NEAR: Intro to NEAR
 
Encode x The Graph: Curating and delegating on The Graph
Encode x The Graph: Curating and delegating on The GraphEncode x The Graph: Curating and delegating on The Graph
Encode x The Graph: Curating and delegating on The Graph
 
Encode x NEAR: Intro to Blockchain
Encode x NEAR: Intro to BlockchainEncode x NEAR: Intro to Blockchain
Encode x NEAR: Intro to Blockchain
 
bounties4bandits: Information event
bounties4bandits: Information eventbounties4bandits: Information event
bounties4bandits: Information event
 
Intro to avalanche
Intro to avalancheIntro to avalanche
Intro to avalanche
 
Encode x Graph: The Data Economy
Encode x Graph: The Data EconomyEncode x Graph: The Data Economy
Encode x Graph: The Data Economy
 
Encode x BitDAO Intro Event
Encode x BitDAO Intro EventEncode x BitDAO Intro Event
Encode x BitDAO Intro Event
 
Encode x The Graph - Introduction to the Graph
Encode x The Graph - Introduction to the GraphEncode x The Graph - Introduction to the Graph
Encode x The Graph - Introduction to the Graph
 
Hack DeFi: DeFi with Wintermute
Hack DeFi: DeFi with WintermuteHack DeFi: DeFi with Wintermute
Hack DeFi: DeFi with Wintermute
 
Hack DeFi Launch
Hack DeFi LaunchHack DeFi Launch
Hack DeFi Launch
 
Nft Hack Ideation Workshop
Nft Hack Ideation WorkshopNft Hack Ideation Workshop
Nft Hack Ideation Workshop
 
Best practices for canisters in rust
Best practices for canisters in rustBest practices for canisters in rust
Best practices for canisters in rust
 
Decentralized possibilities with filecoin & ipfs_encode filecoin club
Decentralized possibilities with filecoin & ipfs_encode filecoin clubDecentralized possibilities with filecoin & ipfs_encode filecoin club
Decentralized possibilities with filecoin & ipfs_encode filecoin club
 
Encode x ICH: Intro to Building on the IC in Motoko
Encode x ICH: Intro to Building on the IC in MotokoEncode x ICH: Intro to Building on the IC in Motoko
Encode x ICH: Intro to Building on the IC in Motoko
 
NFT Hack: Launch Event
NFT Hack: Launch Event NFT Hack: Launch Event
NFT Hack: Launch Event
 

Dernier

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 

Dernier (20)

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 

Encode x NEAR: Technical Overview of NEAR 1

  • 1. NEAR 101 An introductory workshop for web developers near.org Workshop Preparation Please complete the following steps before the workshop starts: - [5 min] Install Node.js locally - [2 min] Install NEAR CLI locally - [3 min] Create a TestNet account on NEAR Protocol If you have time, feel free to complete the following steps as well: - Read and watch a few of the key articles about the NEAR platform: - The Beginner’s Guide to NEAR Protocol - Blockchain Infrastructure Landscape - Watch Blockchain 101 - Deploy the Guestbook sample application (Gitpod or locally) Available Recordings - crowdcast.io/e/hacktherainbow/12 - crowdcast.io/e/hacktherainbow/6 - crowdcast.io/e/near-101---v0-4 - crowdcast.io/e/near-101---v0-3 - crowdcast.io/e/near-101---v0-2 - crowdcast.io/e/near-101---v0-1
  • 3. Coming from web2 to web3: a primer web2 web3 topology client-server client-(server+blockchain) app dev technology - JS frontend - multiple backend techs - JS frontend - Rust and AssemblyScript (like JS/TS) on NEAR security accounts - username / password - oAuth accounts asymmetric key pairs (public and private keys) servers - AWS / GCP / Azure servers ← web2 + consensus (PoW, PoS, etc) key performance fast. cheap. data is “native” unassailable. permanent. money is "native"
  • 6. - there are 2 main folders in the project: - assembly contains the smart contract and tests - src contains the application’s UX and tests - there is another folder to be aware of: - neardev contains contract account details Guest Book
  • 7. Guest Book (backend) Contract Data Model : assembly/model.ts - PostedMessage is a serializable class with three attributes: - premium to flag messages with attached NEAR tokens - sender to track the signer of the guest book message - text to hold the guest book message - messages is a collection of guest book messages stored as a PersistentVector of PostedMessage objects note: @nearBindgen marks the class as serializable
  • 8. Contract Behavior : assembly/main.ts - MESSAGE_LIMIT is used to avoid unbounded calls (ie. potentially expensive) to retrieve guest book messages from storage - two public functions are exposed on the contract: - addMessage() - getMessages() Guest Book (backend)
  • 9. Guest Book (frontend) Network Connection : src/config.js - data and endpoints required to connect to the NEAR network - connection information is included for MainNet, TestNet and BetaNet as well as the default LocalNet configuration
  • 10. Configuration : src/index.js - configure connection to NEAR network - configure contract interface by injecting wallet connection and wiring up both contract methods Guest Book (frontend)
  • 11. Guest Book (frontend) Authentication : src/App.js - NEAR Wallet is used for authentication - near-api-js exposes two related methods - wallet.requestSignIn() - wallet.signOut() note: useCallback() is a React Hook
  • 12. CRUD : src/App.js - add a message and, once complete, get a list of all messages (up to MESSAGE_LIMIT) Guest Book (frontend)
  • 13. Monitoring the application ... http post https://rpc.testnet.near.org jsonrpc=2.0 id=dontcare method=query params:='{ "request_type": "view_state", "finality": "final", "account_id": "test", "prefix_base64": "U1RBVEU=" }’ And, using the watch command and some JSON formatting with jq, automatically refresh a convenient view while we use the Guestbook example. Here’s how. Also see here for our JSON RPC API docs https://docs.near.org/docs/interaction/rpc Guest Book
  • 14. NEAR has two paths for extension dApp UX development - Use near-api-js to connect to NEAR, manage accounts, call contract methods and more - Use JSON-RPC API to communicate with NEAR from any context (other than JS / TS) - Manage devops with NEAR CLI dApp Contract Development - Use near-sdk-as to build contracts using AssemblyScript - Use near-sdk-rs to build contracts using Rust - Compose deployed contracts using cross-contract calls
  • 15. Runtime Layer state storage virtual machine code load apply result read write Your dApp send receive Blockchain Layer RPC Interface - P2P network - Consensus - Block Storage near-api-js contracts near-sdk-as near-sdk-rs deploy NEAR Protocol for Developers
  • 16. Lifecycle of a transaction Runtime Layer state storage virtual machine code load apply result read write Your dApp send receive Blockchain Layer RPC Interface - P2P network - Consensus - Block Storage near-api-js contracts near-sdk-as near-sdk-rs 1 2 3 4 5 6 7 deploy
  • 17. write read` Runtime Layer state storage virtual machine code load apply result Your dApp send receive Blockchain Layer RPC Interface - P2P network - Consensus - Block Storage near-api-js contracts near-sdk-as near-sdk-rs deploy Structure of the Sample Application
  • 19. create-near-app To start building on NEAR run the following* in your terminal: npx create-near-app --help * you must have Node.js installed to run npx
  • 20. create-near-app Choose templates for a frontend and a contract: Frontend - JavaScript - React Contract - AssemblyScript - Rust
  • 21. create-near-app Choose templates for a frontend and a contract: Frontend - JavaScript - React Contract - AssemblyScript - Rust
  • 23. create-near-app step #2 yarn dev ( or use npm run dev )
  • 24. step #3 create-near-app Sign in to NEAR Wallet ( 1 ) create new account ( 2 ) authorize your app
  • 25. step #4 create-near-app Change the message ( 1 ) edit the greeting ( 2 ) click Save ( 3 ) observe a → b a b b
  • 26. step #5 … n - discover - where do we setup a connection to NEAR? hint: search the code for keyStore - where do we login to the NEAR Wallet? hint: search the code for requestSignIn - which lines of code wire up the contract to our JS context? hint: search the code for viewMethods or changeMethods - control - try to reverse the greeting string before writing on chain hint 1: search for storage.set … AssemblyScript supports common Array and String functions hint 2: message.split('').reverse().join('') create-near-app
  • 27. Rust Pros - Mature, battle-hardened compiler - Thriving ecosystem - Real world use cases - near-sdk-rs makes life easy Cons - Steeper learning curve AssemblyScript Pros - Easier for prototyping - Trivial for JS and TS devs to learn - Smaller binaries in Wasm - Binaries are easier to read / debug Cons - Current compiler is not stable - Immature ecosystem AssemblyScript has its place
  • 29. NEAR Explorer - Monitor all public network activity including validator nodes, block height, recent transactions and account details
  • 30. NEAR Wallet - When your users log in, they will be presented with this screen where they can create a new account (funded with 500 NEAR tokens) and setup a preferred recovery method
  • 31. - When users are redirected back to your app, they can check towill find in LocalStorage a copy of the private keys giving your app FunctionCall access to their account - In Chrome Developer Tools 1. Open LocalStorage in the Application tab 2. Storage key name will be something like near-api-js:keystore:ACCOUNT:default 3. Storage value will be the account private key 4. And using the code snippets previously presented, keys are accessible at this path NEAR Wallet
  • 33. - managing NEAR primitives: - key stores - accounts - contracts - wallets - connection providers (RPC) - generating key pairs locally - creating transactions locally - signing transactions locally - sending transactions to the network near-api-js Library designed to connect to the NEAR platform from any JavaScript execution context (server-side or client-side JS)
  • 36. near-api-js Your dApp Examples at near.dev NEAR Explorer NEAR Wallet NEAR CLI send receive RPC Interface Blockchain Layer near-api-js uses JSON RPC API
  • 37. near-api-js Your dApp Examples at near.dev NEAR Explorer NEAR Wallet NEAR CLI send receive RPC Interface Blockchain Layer near-api-js uses JSON RPC API
  • 38. - syntax is identical to TypeScript (AS is a strict subset of TS) near-sdk-as Library designed to support the development of valid NEAR contracts using AssemblyScript (AS)
  • 39. near-sdk-rs - Best choice for high value contracts Library designed to support the development of valid NEAR contracts using Rust (RS)
  • 41. - human readable names that follow a DNS naming pattern - may represent either a user, a contract or both - maintain their own storage (via “storage staking” mechanism) see https://docs.near.org/docs/concepts/account see https://docs.near.org/docs/concepts/storage NEAR Accounts
  • 42. - composed of one or more Actions (currently there are 8 supported Actions) - transactions that change state must be signed by a valid NEAR Account - converted to “receipts” internally for cross-contract calls see https://docs.near.org/docs/concepts/transaction NEAR Transactions
  • 43. - key-value store maintained as part of each NEAR account - paid for using “storage staking” mechanism see https://docs.near.org/docs/concepts/storage NEAR State
  • 44. Account ≈ Contract + State Runtime Layer state storage virtual machine code load read write Your dApp send receive Blockchain Layer RPC Interface - P2P network - Consensus - Block Storage near-api-js contracts near-sdk-as near-sdk-rs result apply
  • 45. Account ≈ Contract + State Runtime Layer state storage virtual machine code load result read write apply
  • 46. Account ≈ Contract + State Runtime Layer virtual machine code load metadata result read write data apply state storage
  • 47. Runtime Layer result apply Account ≈ Contract + State virtual machine code load read write key value STATE your contract code message “hello world” counter 3 prefix::identifier value at collection key prefix::len PersistentVector length prefix::last PersistentDeque last item state storage
  • 49. Cross-contract calls enable scalability shard.1.vm shard.2.vm … send receive cross-contract call cross-contract call Your dApp Each NEAR account is assumed to live on its own shard, even if two accounts are physically located in the same shard. This makes any method invocation from one contract to another a “cross-contract call” (contract = account + state) From the perspective of a contract developer, cross-contract calls look a lot like promises in popular languages. They may or may not return a value, support the orchestration of call chains and are capable of merging multiple calls into one. cross-contract call
  • 50. Cross-contract calls enable scalability shard.1.vm shard.2.vm send receive internal NEAR supports two contexts for cross-contract calls - External calls originate from your client-side code (ie. using near-api-js) - Internal calls originate from your contract code (ie. using near-sdk-as) Both external and internal cross-contract calls support “batch” calls and “promise” calls Your dApp external
  • 51. Exploring cross-contract calls B A C D B & A are NOT cross-contract calls C & D are cross-contract calls
  • 52. Exploring cross-contract calls B A C D B & A are NOT cross-contract calls C & D are cross-contract calls
  • 53. Exploring cross-contract calls External “promise” calls which are used to invoke methods on multiple contracts using the standard Promise interface This example was taken from MDN (just assume the functions wrap near-api-js) A
  • 54. Exploring cross-contract calls External “batch” calls are used to chain a series of Actions together to be executed on some target account B
  • 55. Exploring cross-contract calls Internal “batch” calls which are used to chain a series of Actions together to be executed on some target account (including being applied to the current contract) C
  • 56. Exploring cross-contract calls Internal “promise” calls which are used to invoke methods on other contracts (or recursively on the current contract) D
  • 58. deploy MainNet simulation integration deploy TestNet unit build contract Our APIs in a landscape of testing 2 AssemblyScript contracts near-sdk-as Rust contracts near-sdk-rs 1 3 unit testing ( as-pect ) unit testing ( #[test] ) Runtime API near-vm CLI blockchain near-api-js API NEAR CLI
  • 59. Contract testing is convenient and maturing simulation tests integration tests - as-pect testing framework for AssemblyScript - uses rpec-style syntax with support for exception paths - full control over VM Context (ie. signer_id, contract_id, etc) AssemblyScript contracts near-sdk-as unit testing ( as-pect ) internal 1 unit testing ( as-pect )
  • 60. Contract testing is convenient and maturing integration tests AssemblyScript contracts near-sdk-as unit testing ( as-pect ) simulation tests - uses near-vm for parity between Rust and AssemblyScript contracts ( wraps the NEAR Protocol on-chain virtual machine ) - allows fine-grained control of economics configuration, execution context and state management ( simulate any genesis config, account state and transaction context ) simulation near-vm CLI 2
  • 61. Contract testing is convenient and maturing integration tests AssemblyScript contracts near-sdk-as unit testing ( as-pect ) simulation tests - test cross-contract calls - use any Node.js testing framework ( ie. Jest, Ava ) - API supports all 8 NEAR action types ( ie. CreateAccount ) - API is identical for both AssemblyScript and Rust ( since we’re testing the Wasm file at this point ) simulation 2 Runtime API
  • 62. Contract testing is convenient and maturing integration tests AssemblyScript contracts near-sdk-as unit testing ( as-pect ) simulation tests - deploy contracts to local node (LocalNet) or TestNet - invoke contract methods to generate realistic resource consumption estimates - UX is identical for both AssemblyScript and Rust ( since we’re testing the Wasm file at this point ) simulation 3 NEAR CLI
  • 63. Contract testing is convenient and maturing integration tests AssemblyScript contracts near-sdk-as unit testing ( as-pect ) simulation tests - test cross-contract calls - use any JavaScript testing framework ( ie. Jasmine ) - integrates closely with your dApp UX - API is identical for both AssemblyScript and Rust ( since we’re testing via near-api-js at this point ) simulation 3 near-api-js API
  • 65. visit near.help Touch base on Telegram Discover us on Discord Suggest topics on StackOverflow