Skip to content

Releases: transmute-industries/transmute-framework

Ignition

14 Oct 21:18
Compare
Choose a tag to compare
Ignition Pre-release
Pre-release

This release focuses on standardizing the way the framework and cli work with firebase.

We set out to make configuring, building and deploying dapps as simple as possible, this release lays the ground work for future improvements.

The cli is now an integral part of building dapps.

yarn global add transmute-cli@latest

The cli is used to setup ~/.transmute a folder which holds secrets and app templates. You may find it convenient to initialze this directory from elsewhere in your filesystem, especially if debugging the cli.

transmute setup --reset
transmute setup --reset --from ~/Code/secrets/.transmute/

Once ~/.transmute is setup correctly, you should have:

README.md
environment.node.js
environment.secret.env
environment.web.js
firebase-client-config.json
firebase-service-account.json

See the readme for a description of these files.

When you want to create a new dapp, open a workspace directory and run:

transmute init .
cd ./dapp
yarn install

This will copy the dapp from ~/.transmute/dapp along with the functions used by the transmute-cli as a starting point. Paths will be updated automatically.

You may with to use ngrok to test your services locally. Here is a sample config:

authtoken: TOKEN
tunnels:
  functions:
    addr: 3001
    proto: http
    hostname: functions.transmute.industries

  testrpc:
    addr: 8545
    proto: http
    hostname: testrpc.transmute.industries

Start ngrok.

ngrok start testrpc functions

Once ngrok is running, its time to start your local function server:

transmute serve

This transmute cli command runs a local web server, and wires all your functions up so you can test them locally before deploying them to firebase.

yarn start

This command starts your dapp:

http://localhost:3000

If all goes well your dapp will render the basic create react app, with some buttons for testing the framework.

After logging in, you should be able to see any address that has requested a token via the button.

You can use firestore.rules to configure access for framework users:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
  }
}

The example above only allows reading and writing by authenticated clients.

Why Firebase?

We need a fullstack development environment, for building, testing, configuring and deploying ethereum web applications and services, in addition to database support.

Its very difficult to build a generic cross platform solution which accomplishes all of these from the start.

However, the framework is very modular and fully capable of being upgraded to support pluggable databases, hosting solutions and web services.

If you really wish we supported Azure Functions + Cosmos DB + Azure App Services, Please comment on #96

Other suggestions are welcome.

The framework and cli are a work in progress. Expect breaking changes, and rough edges. Please open an issue if you get stuck or lost and we'll be happy to help.

Ocelot

05 Oct 02:45
Compare
Choose a tag to compare
Ocelot Pre-release
Pre-release

Ocelot

this release is not bundled properly and lacks typings. apologies, please update to the latest version

This release is focussed almost entirely on package structure, namely bundling with webpack and switching from nyc Istanbul mocha to jest.

We're working to make the library more dynamically configurable after its been built.

You can now easily switch between web3 providers and wallets by using the init method of the framework:

const mnemonic = "couch solve unique spirit wine fine occur rhythm foot feature glory away";
const hdwallet = hdkey.fromMasterSeed(bip39.mnemonicToSeed(mnemonic));

const walletHDPath = "m/44'/60'/0'/0/";
const wallet = hdwallet.derivePath(walletHDPath + "0").getWallet();

TransmuteFramework.init({
  providerUrl: "https://ropsten.infura.io",
  wallet: wallet,
  aca: accessControlArtifacts,
  esa: eventStoreArtifacts,
  esfa: eventStoreFactoryArtifacts
});

We fixed some issues with our ecrecover wrappers: sign and recover

 describe(".sign + .recover work", () => {
    it("work as expected", async () => {
      let message = "hello";
      let signatureWithMeta = await Toolbox.sign(account, message);
      let recoveredAddress = await Toolbox.recover(
        account,
        signatureWithMeta.messageBufferHex,
        signatureWithMeta.signature
      );
      expect(signatureWithMeta.address === recoveredAddress);
    });
  });

We have removed our cli code from the framework repo.
It will be added to the still in progress transmute-cli which is now its own stand alone repo.

We want the framework to stay focused on universal javascript dapps, and let the cli provide tooling and support for installing the framework into projects, altering smart contracts and deploying oracles (more to come soon!).

Some of the package commands have changed, please review package.json and the readme.

Pyrite

12 Jul 02:47
Compare
Choose a tag to compare
Pyrite Pre-release
Pre-release

This release contains a rewrite of the eventstore and the addition of a role based access control system.

You can read more about it here:

Features

  • EventStoreLib - no longer a contract
  • RBAC - an access control contract using the EventStoreLib
  • More compact and portable solidity events.
  • Better permissions interface, including a Permissions reducer
  • Simpler middleware, less complex type conversion
  • JSON patching and diffing reducer example
  • JSON Logic example for user generated rules
  • Better data driven tests
  • Enhanced permission CLI

Alpha

23 Jun 03:38
Compare
Choose a tag to compare
Alpha Pre-release
Pre-release

Main features:

  • IPFS Integration
  • Object Events are now stored as IPLD on IPFS by default
  • Support for configuring web3 provider and ipfs node via init method
  • Patch Algebra for generic diff events computed from state transitions
  • Command line interface for interacting with EventStore
  • Create React App and React Webpack Babel Examples
  • Over 90% Test Coverage (including CLI now)
  • 46 Truffle Tests
  • 58 TypeScript Mocha Framework Tests

Read the docs:

https://framework.transmute.industries/

Pre Alpha

02 Jun 01:20
Compare
Choose a tag to compare
Pre Alpha Pre-release
Pre-release

Its main features are:

  • New Docs (still in progress) https://framework.transmute.industries
  • Transmute Events and Commands are now Flux Standard Actions
  • Massive speed increase for reading Transmute Events with object payloads
  • Simple ACL based permissions model
  • Better reducer style (read model reducers are now more like redux reducers)
  • EventStoreFactory for creating new EventStores on the fly
  • Over 90% Test Coverage
  • 30 Truffle Smart Contract Tests
  • 43 TypeScript Framework Tests