Releases: transmute-industries/transmute-framework
Ignition
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:
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
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
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
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:
Pre Alpha
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