Bladeren bron

report-generator: Giza cleanup

Joystream Stats 3 jaren geleden
bovenliggende
commit
5f4deb8284

+ 2 - 13
scripts/joystream-api/tsconfig.json

@@ -7,23 +7,12 @@
     "noUnusedLocals": true,
     "noImplicitReturns": true,
     "moduleResolution": "node",
-    "allowSyntheticDefaultImports": true,     /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
-    "esModuleInterop": true,                  /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
-    "experimentalDecorators": true,           /* Enables experimental support for ES7 decorators. */
     "declaration": true,
     "resolveJsonModule": true,
-    "types" : [
-      "node"
-    ],
+    "types" : [ "node" ],
     "forceConsistentCasingInFileNames": true,
     "baseUrl": ".",
-    "paths": {
-      "@polkadot/types/augment": ["./node_modules/@joystream/types/augment-codec/augment-types.ts"]
-    },
-    "typeRoots": [
-      "./node_modules/@polkadot/ts",
-      "./node_modules/@types"
-    ],
+    "typeRoots": [ "./node_modules/@types" ],
     "declarationDir": "lib",
     "outDir": "lib"
   },

+ 6 - 15
scripts/report-generator/package.json

@@ -10,23 +10,14 @@
     "status": "node lib/status"
   },
   "dependencies": {
-    "@joystream/content-metadata-protobuf": "^1.1.0",
-    "@joystream/types": "^0.16.1",
-    "@polkadot/api": "4.2.1",
-    "@polkadot/api-contract": "4.2.1",
-    "@polkadot/keyring": "^6.0.5",
-    "@polkadot/types": "4.2.1",
-    "@polkadot/util": "^6.0.5",
-    "@polkadot/util-crypto": "^6.0.5",
-    "@polkadot/wasm-crypto": "^4.0.2",
-    "@types/bn.js": "^4.11.6",
+    "@joystream/metadata-protobuf": "^1.0.0",
+    "@joystream/types": "^0.17.2",
     "axios": "^0.24.0",
-    "bn.js": "^5.1.2",
-    "csv-parse": "^4.15.4",
-    "ts-node": "^10.3.0"
+    "csv-parse": "^4.15.4"
   },
   "devDependencies": {
-    "@polkadot/ts": "^0.3.62",
-    "typescript": "^3.9.7"
+    "@types/node": "^17.0.13",
+    "ts-node": "^10.3.0",
+    "typescript": "^4.5.0"
   }
 }

+ 7 - 10
scripts/report-generator/src/council.ts

@@ -9,8 +9,9 @@ import {
   ProposalType,
   ReportData,
 } from "./types/council";
+import { getCouncilAt } from "./lib/api";
 import { StorageKey, U32, u32, Vec } from "@polkadot/types";
-import { Seats } from "@joystream/types/council";
+import { Backer, Seats } from "@joystream/types/council";
 import { MemberId, Membership } from "@joystream/types/members";
 import { Mint, MintId } from "@joystream/types/mint";
 import { ProposalDetailsOf, ProposalOf } from "@joystream/types/augment/types";
@@ -226,13 +227,11 @@ async function getCouncilMembersInfo(
   range: BlockRange,
   proposals: Array<ProposalInfo>
 ) {
-  const seats = (await api.query.council.activeCouncil.at(
-    range.startBlockHash
-  )) as Seats;
+  const seats: Seats = await getCouncilAt(api, range.startBlockHash);
 
   let councilRoundInfo = new CouncilRoundInfo();
   councilRoundInfo.members = await Promise.all(
-    seats.map(async (seat) => {
+    seats.map(async (seat): Promise<CouncilMemberInfo> => {
       let info = new CouncilMemberInfo();
       let memberKey = seat.member.toString();
       info.memberId = Number(
@@ -247,10 +246,8 @@ async function getCouncilMembersInfo(
       )) as Membership;
       info.username = membership.handle.toString();
       info.ownStake = Number(seat.stake.toBigInt());
-      const backersStakeArray = seat.backers.map((backer) =>
-        Number(backer.stake.toBigInt())
-      );
-      info.backersStake = backersStakeArray.reduce((a, b) => a + b, 0);
+      const sum = (a: number[]) => a.reduce((s: number, i: number) => s + i, 0);
+      info.backersStake = sum(seat.backers.map((b: Backer) => +b.stake));
       return info;
     })
   );
@@ -399,7 +396,7 @@ async function getProposals(api: ApiPromise, range: BlockRange) {
   );
 
   let proposals = new Array<ProposalInfo>();
-  for (let i = startProposalCount - 1; i <= endProposalCount; i++) {
+  for (let i = startProposalCount; i <= endProposalCount; i++) {
     try {
       const proposal = await getProposal(api, range, i);
       if (proposal) proposals.push(proposal);

+ 38 - 36
scripts/report-generator/src/tokenomics.ts

@@ -9,7 +9,12 @@ import {
   EventRecord,
   Hash,
 } from "@polkadot/types/interfaces";
-import { Config, MintStatistics, Statistics, WorkersInfo } from "./types/tokenomics";
+import {
+  Config,
+  MintStatistics,
+  Statistics,
+  WorkersInfo,
+} from "./types/tokenomics";
 import {
   CacheEvent,
   Bounty,
@@ -21,7 +26,7 @@ import {
 import { Option, u32, Vec } from "@polkadot/types";
 import { ElectionStake, SealedVote, Seats } from "@joystream/types/council";
 import { Mint, MintId } from "@joystream/types/mint";
-import { ContentId, DataObject } from "@joystream/types/media";
+import { ContentId, DataObjectType } from "@joystream/types/legacy"; //@joystream/types/storage
 import { CategoryId } from "@joystream/types/forum";
 import { MemberId, Membership } from "@joystream/types/members";
 import {
@@ -34,6 +39,7 @@ import {
   RewardRelationshipId,
 } from "@joystream/types/recurring-rewards";
 import { Stake } from "@joystream/types/stake";
+import { StorageBucket, StorageBucketId } from "@joystream/types/storage";
 import { Worker, WorkerId } from "@joystream/types/working-group";
 import { ProposalDetails, ProposalOf } from "@joystream/types/augment/types";
 import * as constants from "constants";
@@ -78,12 +84,10 @@ import {
   getProposalDetails,
   getValidatorCount,
   getValidators,
-  getNextEntity,
   getNextChannel,
   getNextVideo,
-  getEntity,
-  getDataObject,
-  getDataObjects,
+  getStorageBucket,
+  getStorageBuckets,
 } from "./lib/api";
 
 import {
@@ -334,8 +338,7 @@ export class StatisticsCollector {
       termDuration,
     ]: number[] = await getCouncilElectionDurations(this.api, endHash);
 
-    const nrCouncilMembers = ((await getCouncil(this.api, endHash)) as Seats)
-      .length;
+    const nrCouncilMembers = ((await getCouncil(this.api)) as Seats).length;
     const totalCouncilRewardsPerBlock =
       amountPerPayout && payoutInterval
         ? (amountPerPayout * nrCouncilMembers) / payoutInterval
@@ -675,35 +678,34 @@ export class StatisticsCollector {
     const endChannels = Number(await getNextChannel(this.api, endHash));
 
     // count size
-    let startUsedSpace = 0;
-    let endUsedSpace = 0;
-    const startBlock = await getBlock(this.api, startHash);
-    const endBlock = await getBlock(this.api, endHash);
-    getDataObjects(this.api).then((dataObjects: Map<ContentId, DataObject>) => {
-      for (let [key, dataObject] of dataObjects) {
-        const added = dataObject.added_at.block.toNumber();
-        const start = startBlock.block.header.number.toNumber();
-        const end = endBlock.block.header.number.toNumber();
-
-        if (added < start)
-          startUsedSpace += dataObject.size_in_bytes.toNumber() / 1024 / 1024;
-        if (added < end)
-          endUsedSpace += dataObject.size_in_bytes.toNumber() / 1024 / 1024;
-      }
-      if (!startUsedSpace || !endUsedSpace)
+    getStorageBuckets(this.api).then(
+      async (buckets: Map<StorageBucketId, StorageBucket>) => {
+        let startUsedSpace = 0;
+        let endUsedSpace = 0;
+        for (const [id, bucket] of buckets) {
+          const atStart = await getStorageBucket(this.api, id, startHash);
+          const atEnd = await getStorageBucket(this.api, id, endHash);
+          const growth =
+            atEnd.voucher.sizeUsed.toNumber() -
+            atStart.voucher.sizeUsed.toNumber();
+
+          startUsedSpace += atStart.voucher.sizeUsed.toNumber() / 1024 / 1024;
+          endUsedSpace += atEnd.voucher.sizeUsed.toNumber() / 1024 / 1024;
+        }
         console.log(`space start, end`, startUsedSpace, endUsedSpace);
-      this.saveStats({
-        startMedia,
-        endMedia,
-        percNewMedia: getPercent(startMedia, endMedia),
-        startChannels,
-        endChannels,
-        percNewChannels: getPercent(startChannels, endChannels),
-        startUsedSpace: Number(startUsedSpace.toFixed(2)),
-        endUsedSpace: Number(endUsedSpace.toFixed(2)),
-        percNewUsedSpace: getPercent(startUsedSpace, endUsedSpace),
-      });
-    });
+        this.saveStats({
+          startMedia,
+          endMedia,
+          percNewMedia: getPercent(startMedia, endMedia),
+          startChannels,
+          endChannels,
+          percNewChannels: getPercent(startChannels, endChannels),
+          startUsedSpace: Number(startUsedSpace.toFixed(2)),
+          endUsedSpace: Number(endUsedSpace.toFixed(2)),
+          percNewUsedSpace: getPercent(startUsedSpace, endUsedSpace),
+        });
+      }
+    );
   }
 
   async fillForumInfo(startHash: Hash, endHash: Hash): Promise<void> {