| Private key | {privKey} |
| Public key | {pubKey} |
| ETH | {ethAddr} |
| REV | {revAddr} |
| Account | REV | ETH | PUBLIC | PRIVATE |
|---|---|---|---|---|
| {name} | +{rev} | +{eth} | +{pub} | +{priv ? ✓ : ''} | +
(prop: P) => Cell (prop: P) => {
+ const compLens = Lens.fromProp You are connected to MAIN RChain network. Any deploy will use REAL REVs.
')
+ })
+ const el = document.createElement('pre')
+ el.innerHTML = lines.join(' ')
+ logEL?.prepend(el)
+ log(...args)
+ }
+ return logWrap
+}
+
+// Prevents default redirect for link
+export const handleHashHref = (ev: Event) => {
+ const target = ev.target as Element
+ const isHrefHash = target
+ && target.nodeName === 'A'
+ && target.attributes.getNamedItem('href')?.value === '#'
+
+ if (isHrefHash) ev.preventDefault()
+}
diff --git a/src/controls/custom-deploy-ctrl.tsx b/src/controls/custom-deploy-ctrl.tsx
new file mode 100644
index 0000000..d078de6
--- /dev/null
+++ b/src/controls/custom-deploy-ctrl.tsx
@@ -0,0 +1,171 @@
+import * as R from 'ramda'
+import { RevAccount } from '@tgrospic/rnode-http-js'
+import { NodeUrls } from '../rchain-networks'
+import { h, labelStyle, showRevDecimal, labelRev, showNetworkError, Cell, blockEventKey } from './common'
+
+const sampleReturnCode = `new return(\`rho:rchain:deployId\`) in {
+ return!((42, true, "Hello from blockchain!"))
+}`
+
+const sampleInsertToRegistry = `new return(\`rho:rchain:deployId\`),
+ insertArbitrary(\`rho:registry:insertArbitrary\`)
+in {
+ new uriCh, valueCh in {
+ insertArbitrary!("My value", *uriCh) |
+ for (@uri <- uriCh) {
+ return!(("URI", uri))
+ }
+ }
+}`
+
+const sampleRegistryLookup = `new return(\`rho:rchain:deployId\`),
+ lookup(\`rho:registry:lookup\`)
+in {
+ new valueCh in {
+ // Fill in registry URI: \`rho:id:11fhnau8j3...h4459w9bpus6oi\`
+ lookup!( Custom deploy
+ {isWalletEmpty ? REV wallet is empty, add accounts to make deploys. : <>
+ Send deploy to selected validator RNode.
+
+ {/* Rholang examples */}
+ RNode client testing page
+
+ {selectorCtrl(selSt, {nets})}
+
+ {/* REV wallet control */}
+ {addressCtrl(addressSt, {wallet, onAddAccount: onSaveAccount})}
+
+ {/* Check balance control */}
+ {balanceCtrl(balanceSt, {wallet, onCheckBalance: onCheckBalance(readNodeUrls)})}
+
+ {/* Transfer REV control */}
+
+ {transferCtrl(transferSt, {
+ wallet, warn,
+ onTransfer: onTransfer(valNodeUrls, setTransferStatus),
+ onOfflineTransfer: onOfflineTransfer(valNodeUrls, setTransferStatus),
+ })}
+
+ {/* Custom deploy control */}
+
+ {customDeployCtrl(customDeploySt, {
+ wallet, node: valNodeUrls,
+ onSendDeploy: onSendDeploy(valNodeUrls, setDeployStatus),
+ onPropose: onPropose(valNodeUrls),
+ warn,
+ })}
+ RChain Network selector
+ {valNode.title} - validator node {faucetUrl && faucet}
+
+
+ {/* Validator info */}
+
+ Direct links
+ status
+ blocks
+ {valUrls.logsUrl && logs}
+ {valUrls.filesUrl && files}
+
+ {valUrls.grpcUrl &&
+ {isMainnet && }
+ gRPC {valUrls.grpcUrl}
+ {isLocal && HTTP {valUrls.httpUrl} }
+ Admin {valUrls.httpAdminUrl}{readNode.title} - read-only node
+
+
+ {/* Read-only info */}
+
+ Direct links
+ status
+ blocks
+ {readUrls.logsUrl && logs}
+ {readUrls.filesUrl && files}
+
+ {readUrls.grpcUrl &&
+ }
+ gRPC {readUrls.grpcUrl}
+ {isLocal && HTTP {readUrls.httpUrl} }
+ Admin {readUrls.httpAdminUrl}Transfer REV tokens
+ {isWalletEmpty ? REV wallet is empty, add accounts to make transfers. : <>
+