當前位置: 首頁>>代碼示例>>TypeScript>>正文


TypeScript cf.js.utils類代碼示例

本文整理匯總了TypeScript中@counterfactual/cf.js.utils的典型用法代碼示例。如果您正苦於以下問題:TypeScript js.utils類的具體用法?TypeScript js.utils怎麽用?TypeScript js.utils使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


在下文中一共展示了js.utils類的5個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。

示例1: setCommitment

  /**
   * Sets the commitment at the end of a protocol's execution.
   * @param internalMessage
   * @param next
   * @param context
   * @throws Error if the counterparty's signature is not set
   */
  public async setCommitment(
    internalMessage: InternalMessage,
    next: Function,
    context: Context
  ) {
    let appId;
    const action: cf.legacy.node.ActionName = internalMessage.actionName;
    const operation = context.intermediateResults.operation!;
    let appCommitments: AppCommitments;

    const incomingMessage = this.incomingMessage(internalMessage, context);

    if (action === cf.legacy.node.ActionName.SETUP) {
      appId = internalMessage.clientMessage.multisigAddress;
    } else if (action === cf.legacy.node.ActionName.INSTALL) {
      const proposal = context.intermediateResults.proposedStateTransition!;
      appId = proposal.cfAddr;
    } else {
      appId = internalMessage.clientMessage.appId;
    }

    if (this.store.has(appId)) {
      appCommitments = AppCommitments.deserialize(appId, this.store.get(appId));
    } else {
      appCommitments = new AppCommitments(appId);
      this.appCount += 1;
      this.store.put(appId, Object(appCommitments.serialize()));
    }

    const signature = context.intermediateResults.signature!;

    const counterpartySignature = incomingMessage!.signature!;
    if (
      counterpartySignature === undefined ||
      cf.utils.signaturesToBytes(signature) ===
        cf.utils.signaturesToBytes(counterpartySignature)
    ) {
      // FIXME: these errors should be handled more gracefully
      // https://github.com/counterfactual/monorepo/issues/99
      throw Error(
        `Cannot make commitment for operation ${action}.
        The counterparty hasn't signed the commitment.`
      );
    }

    await appCommitments.addCommitment(action, operation, [
      signature,
      counterpartySignature
    ]);
    this.store.put(appId, Object(appCommitments.serialize()));
    next();
  }
開發者ID:cylof22,項目名稱:monorepo,代碼行數:59,代碼來源:test-commitment-store.ts

示例2: constructSetStateData

function constructSetStateData(signatures: ethers.utils.Signature[]): string {
  return constructContractCall(
    "proxyCall(address,bytes32,bytes)",
    TEST_NETWORK_CONTEXT.registryAddr,
    TEST_APP_INSTANCE.cfAddress(),
    constructContractCall(
      "setState(bytes32,uint256,uint256,bytes)",
      TEST_APP_STATE_HASH,
      TEST_LOCAL_NONCE,
      TEST_TIMEOUT,
      cf.utils.signaturesToBytes(...signatures)
    )
  );
}
開發者ID:cylof22,項目名稱:monorepo,代碼行數:14,代碼來源:set-state.spec.ts

示例3: constructMultisigExecTransaction

export function constructMultisigExecTransaction(
  operation: "delegatecall" | "call",
  to: string,
  value: string | number,
  transactionData: string,
  signatures: ethers.utils.Signature[]
): string {
  return constructContractCall(
    "execTransaction(address, uint256, bytes, uint8, bytes)",
    to,
    value,
    transactionData,
    operation === "delegatecall" ? 1 : 0,
    cf.utils.signaturesToBytes(...signatures)
  );
}
開發者ID:cylof22,項目名稱:monorepo,代碼行數:16,代碼來源:fixture.ts

示例4: transaction

 public transaction(sigs: ethers.utils.Signature[]): Transaction {
   const multisigInput = this.multisigInput();
   const signatureBytes = cf.utils.signaturesToSortedBytes(
     this.hashToSign(),
     ...sigs
   );
   const txData = new ethers.utils.Interface(
     MinimumViableMultisigJson.abi
   ).functions.execTransaction.encode([
     multisigInput.to,
     multisigInput.val,
     multisigInput.data,
     multisigInput.op,
     signatureBytes
   ]);
   return new Transaction(this.multisig, 0, txData);
 }
開發者ID:cylof22,項目名稱:monorepo,代碼行數:17,代碼來源:multisig-tx-op.ts

示例5: transaction

 /**
  * @returns a tx that executes a proxyCall through the registry to call
  *          `setState` on AppInstance.sol.
  */
 public transaction(sigs: ethers.utils.Signature[]): Transaction {
   const appCfAddr = new cf.legacy.app.AppInstance(
     this.ctx,
     this.multisig,
     this.signingKeys,
     this.app,
     this.terms,
     this.timeout,
     this.appUniqueId
   ).cfAddress();
   const to = this.ctx.registryAddr;
   const val = 0;
   const data = common.proxyCallSetStateData(
     this.ctx,
     this.appStateHash,
     appCfAddr,
     this.appLocalNonce,
     this.timeout,
     cf.utils.signaturesToSortedBytes(this.hashToSign(), ...sigs)
   );
   return new Transaction(to, val, data);
 }
開發者ID:cylof22,項目名稱:monorepo,代碼行數:26,代碼來源:op-set-state.ts


注:本文中的@counterfactual/cf.js.utils類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。