All Projects → input-output-hk → Plutus

input-output-hk / Plutus

Licence: apache-2.0
The Plutus language implementation and tools

Projects that are alternatives of or similar to Plutus

Celo Monorepo
Official repository for core projects comprising the Celo platform
Stars: ✭ 269 (-35.65%)
Mutual labels:  blockchain, smart-contracts
Embark
Framework for serverless Decentralized Applications using Ethereum, IPFS and other platforms
Stars: ✭ 3,478 (+732.06%)
Mutual labels:  blockchain, smart-contracts
Eventeum
A resilient Ethereum event listener that bridges your smart contract events and backend microservices
Stars: ✭ 272 (-34.93%)
Mutual labels:  blockchain, smart-contracts
Go Vite
Official Go implementation of the Vite protocol
Stars: ✭ 257 (-38.52%)
Mutual labels:  blockchain, smart-contracts
Eos Smart Contract Security Best Practices
A guide to EOS smart contract security best practices
Stars: ✭ 371 (-11.24%)
Mutual labels:  blockchain, smart-contracts
Octopus
Security Analysis tool for WebAssembly module (wasm) and Blockchain Smart Contracts (BTC/ETH/NEO/EOS)
Stars: ✭ 261 (-37.56%)
Mutual labels:  blockchain, smart-contracts
Web3j
Lightweight Java and Android library for integration with Ethereum clients
Stars: ✭ 3,537 (+746.17%)
Mutual labels:  blockchain, smart-contracts
Wavelet
Write once, run forever. Deploy robust, scalable, decentralized WebAssembly applications on Wavelet.
Stars: ✭ 224 (-46.41%)
Mutual labels:  blockchain, smart-contracts
Colonynetwork
Colony Network smart contracts
Stars: ✭ 351 (-16.03%)
Mutual labels:  blockchain, smart-contracts
Pact
The Pact Smart Contract Language
Stars: ✭ 347 (-16.99%)
Mutual labels:  blockchain, smart-contracts
Awesome Blockchain Kor
<블록체인의 정석>, <하이퍼레저 블록체인 개발> 소스코드 및 참고자료 저장소
Stars: ✭ 243 (-41.87%)
Mutual labels:  blockchain, smart-contracts
React Ethereum Dapp Example
A starter boilerplate for an Ethereum dapp using web3.js v1.0, truffle, react, and parity
Stars: ✭ 384 (-8.13%)
Mutual labels:  blockchain, smart-contracts
Merkletreejs
🌱 Construct Merkle Trees and verify proofs in JavaScript.
Stars: ✭ 238 (-43.06%)
Mutual labels:  blockchain, smart-contracts
Smart Contract Search Engine
Takes a link to a smart contract's raw ABI file and an RPC URL and then indexes all instances of that smart contract
Stars: ✭ 265 (-36.6%)
Mutual labels:  blockchain, smart-contracts
Remix Project
Remix is a browser-based compiler and IDE that enables users to build Ethereum contracts with Solidity language and to debug transactions.
Stars: ✭ 225 (-46.17%)
Mutual labels:  blockchain, smart-contracts
0xdeca10b
Sharing Updatable Models (SUM) on Blockchain
Stars: ✭ 285 (-31.82%)
Mutual labels:  blockchain, smart-contracts
Insolar
Enterprise-ready blockchain platform
Stars: ✭ 192 (-54.07%)
Mutual labels:  blockchain, smart-contracts
Blockchain Stuff
Blockchain and Crytocurrency Resources
Stars: ✭ 2,549 (+509.81%)
Mutual labels:  blockchain, smart-contracts
Love Ethereum
区块链学习
Stars: ✭ 323 (-22.73%)
Mutual labels:  blockchain, smart-contracts
Buidl
A browser-based IDE for creating, deploying, and sharing blockchain apps (DApps, or decentralized apps). Publish your first blockchain DApps in 5 minutes! Here is how: https://docs.secondstate.io/buidl-developer-tool/getting-started
Stars: ✭ 376 (-10.05%)
Mutual labels:  blockchain, smart-contracts

= https://github.com/input-output-hk/plutus[Plutus Platform] ✉️ [email protected] :author: Input Output HK Limited :toc: left :reproducible:

The Plutus Platform enables you to:

  • Work with Plutus Core, the smart contract language embedded in the Cardano ledger.
  • Write Haskell programs that create and use embedded Plutus Core programs using Plutus Tx.
  • Write smart contract executables which can be distributed for use with the Plutus Smart Contract Backend.

You are free to copy, modify, and distribute the Plutus Platform with under the terms of the Apache 2.0 license. See the link:./LICENSE[LICENSE] and link:./NOTICE[NOTICE] files for details.

== How to use the project

This section contains brief information about how to use this project. For development work see <> for more information.

[[prerequisites]] === Prerequisites

The Haskell libraries in the Plutus Platform can be built in a number of ways. The prerequisites depend on how you want to build the libraries. The other artifacts (docs etc.) are most easily built with Nix, so we recommend installing it regardless.

==== Nix

Install https://nixos.org/nix/[Nix] (recommended). following the instructions on the https://nixos.org/nix/[Nix website].

[IMPORTANT]

Even if you already have Nix installed, make sure to set up the xref:iohk-binary-cache[IOHK binary cache].

See <> for further advice on using Nix.

==== Non-Nix

If you use Nix, these tools are provided for you via shell.nix, and you do not need to install them yourself.

=== How to get started using the libraries

There is an example project in the example folder, see its link:./example/README.md[README] for more details.

=== How to build the Haskell packages and other artifacts

[[building-with-nix]] ==== How to build Haskell packages and other artifacts with Nix

Run nix build -f default.nix plutus.haskell.packages.plutus-core.components.library from the root to build the Plutus Core library.

See <> to find out what other attributes you can build.

==== How to build Haskell packages with cabal

Run cabal build plutus-core from the root to build the Plutus Core library.

See the link:./cabal.project[cabal project file] to see the other projects that you can build with cabal.

==== How to build the Haskell packages with stack

Run stack build plutus-core from the root to build the Plutus Core library. The stack build is less well supported than the cabal build, we do not promise that it will work.

See the link:./stack.yaml[stack project file] to see the other projects that you can build with stack.

=== How to get the most recent documentation PDFs from CI

==== Specifications and design

==== Academic papers

== Where to go next

=== Where to find tutorials

The link:./doc[doc] folder contains the documentation site.

To build a full HTML version of the site that you can view locally, build the docs.site attribute xref:building-with-nix[using Nix].

The online version of the tutorial can be found https://docs.cardano.org/projects/plutus/en/latest/index.html[here]

=== How to submit an issue

User issues can be filed in the https://github.com/input-output-hk/plutus/issues[GitHub Issue tracker].

However, note that this is pre-release software, so we will not usually be providing support.

=== How to communicate with us

We’re active on the https://forum.cardano.org/[Cardano forum]. Tag your post with the plutus tag so we’ll see it.

Use the Github issue tracker for bugs and feature requests, but keep other discussions to the forum.

[[how-to-develop]] === How to develop and contribute to the project

See link:CONTRIBUTING{outfilesuffix}[CONTRIBUTING], which describes our processes in more detail including development environments; and link:ARCHITECTURE{outfilesuffix}[ARCHITECTURE], which describes the structure of the repository.

[[nix]] == Nix

[[iohk-binary-cache]] === How to set up the IOHK binary caches

Adding the IOHK binary cache to your Nix configuration will speed up builds a lot, since many things will have been built already by our CI.

If you find you are building packages that are not defined in this repository, or if the build seems to take a very long time then you may not have this set up properly.

To set up the cache:

. On non-NixOS, edit /etc/nix/nix.conf and add the following lines: +

substituters = https://hydra.iohk.io https://iohk.cachix.org https://cache.nixos.org/ trusted-public-keys = hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= iohk.cachix.org-1:DpRUyj7h7V830dp/i6Nti+NEO2/nhblbov/8MW7Rqoo= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=

. On NixOS, set the following NixOS options: +

nix = { binaryCaches = [ "https://hydra.iohk.io" "https://iohk.cachix.org" ]; binaryCachePublicKeys = [ "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=" "iohk.cachix.org-1:DpRUyj7h7V830dp/i6Nti+NEO2/nhblbov/8MW7Rqoo=" ]; };

NOTE: If you are a https://nixos.org/nix/manual/#ssec-multi-user[trusted user] you may add the nix.conf lines to ~/.config/nix/nix.conf instead.

=== Nix on macOS

Nix on macOS can be a bit tricky. In particular, sandboxing is disabled by default, which can lead to strange failures.

These days it should be safe to turn on sandboxing on macOS with a few exceptions. Consider setting the following Nix settings, in the same way as in xref:iohk-binary-cache[previous section]:


sandbox = true extra-sandbox-paths = /System/Library/Frameworks /System/Library/PrivateFrameworks /usr/lib /private/tmp /private/var/tmp /usr/bin/env

[[nix-build-attributes]] === Which attributes to use to build different artifacts

link:./default.nix[default.nix] defines a package set with attributes for all the artifacts you can build from this repository. These can be built using nix build. For example:


nix build -f default.nix plutus.haskell.packages.plutus-core

.Example attributes

  • Project packages: defined inside plutus.haskell.packages ** e.g. plutus.haskell.packages.plutus-core.components.library
  • Documents: defined inside docs ** e.g. docs.plutus-core-spec
  • Development scripts: defined inside dev ** e.g. dev.scripts.fixStylishHaskell

There are other attributes defined in link:./default.nix[default.nix].

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].