以下情境为教学假设,人物与数字不代表经核实的真实案例。
知识产权常被当成一张证书:注册了就有,没注册就没有。真实的 IP 组合更像四套不同的保护机制:商标保护来源识别,著作权保护表达,专利保护技术方案,商业秘密保护未公开的信息。四者的取得方式、维持成本和失效条件完全不同,把它们混成一个「IP」科目,预算就会记错位置。
Tidecast 的资产正好覆盖四类。代码是著作权加商业秘密,美术是著作权,音乐是买断授权、不得转授权,品牌名是商标;游戏机制理论上可以申请专利,但对一个一人工作室,申请与维权的成本通常高于它能带来的收入。LedgerLite 的对照组更简单:代码与服务商标,几乎没有专利和音乐授权。
这一节只回答四个商业问题:每类 IP 保护什么、怎么取得、能保护多久、五年要花多少钱。它不提供法律意见,也不判断某项资产是否真的满足授权条件;所有费用都是教学假设,用来比较量级,不是报价。
四类 IP 保护的不是同一件东西
| 类型 | 保护对象 | 取得方式 | 期限(教学假设) | Tidecast 对应资产 |
|---|---|---|---|---|
| 商标 | 品牌名称、标识、产品名 | 注册 | 10 年一续,可续展 | 游戏名与工作室标识 |
| 著作权 | 代码、美术、音乐、文字等表达 | 创作完成自动产生 | 法人作品按发表后 70 年估算 | 代码、美术、剧情文本 |
| 专利 | 技术方案、机制、流程 | 注册,须满足授权条件 | 自申请起 20 年 | 游戏机制(通常不申请) |
| 商业秘密 | 未公开的算法、参数、名单 | 保密措施,不注册 | 保密状态存续期间 | 服务端配置、平衡参数 |
商标保护的是「用户看到这个标识,知道是谁做的」。它不保护美术风格,也不保护玩法;别人可以做出画风相近的游戏,只要不用你的名字和标识。Tidecast 注册游戏名,防的是山寨产品用同一个名字截走搜索流量,而不是防玩法被借鉴。
著作权保护的是具体表达,不是想法。代码、美术、音乐、剧情文本在创作完成时自动产生权利;登记不是权利产生的前提,只是让举证更容易。Tidecast 的美术和代码不需要「申请」就有著作权,但如果不做登记、不留创作记录,维权时要先证明「这是我的」。
专利保护的是技术方案,门槛最高。游戏机制可以申请专利,但需要满足新颖性、创造性等条件,申请费、年费和维权费加在一起,通常不是一人工作室的优先项。Tidecast 选择不申请专利,不是因为机制没有价值,而是因为专利的成本结构与它的收入结构不匹配。
商业秘密保护的是「别人不知道」。它没有注册证书,也没有固定期限;只要信息没公开、保密措施还在,保护就继续。代码里的服务端配置、匹配参数、经济系统数值,都可以作为商业秘密;一旦写进公开文档、被离职员工带走、或者被逆向工程还原,保护就可能结束。
取得方式决定你付哪种成本
| 取得方式 | 适用类型 | 需要做什么 | 典型失败模式 |
|---|---|---|---|
| 注册 | 商标、专利 | 申请、审查、缴费、续展 | 类别写窄、未续展、被异议 |
| 自动产生 | 著作权 | 保留创作记录,可选登记 | 无法证明创作时间与归属 |
| 保密 | 商业秘密 | 访问控制、NDA、权限分级 | 公开演示、离职带走、日志泄露 |
三种取得方式对应三种预算。注册型 IP 的前置成本高,但权利边界清楚;自动产生的著作权前期几乎不花钱,但举证成本在后端;商业秘密没有申请费,却要持续投入保密程序,而且一次泄露就可能归零。
Tidecast 的取舍可以写成一张五年预算表。下表全部是教学假设:商标按 1 个类别、1 个辖区;著作权按登记 5 件重点作品;商业秘密按 1 套代码与配置管理程序;专利按 1 个辖区。单位不同,不能直接比较单价,只能比较五年总成本。
| 项目 | 单位 | 5 年成本 | 维持方式 |
|---|---|---|---|
| 商标 | 1 个类别 / 1 个辖区 | $2,700 | 申请费 $1,200,监测费 $300/年 |
| 著作权登记 | 5 件作品 | $1,500 | 每件 $300,无年费 |
| 商业秘密 | 1 套程序 | $12,500 | 访问控制与保密流程 $2,500/年 |
| 专利 | 1 个辖区 | $21,000 | 申请费 $12,000,年费 $1,800/年 |
| 合计(不含专利) | $16,700 | 商标 + 著作权 + 商业秘密 | |
| 合计(含专利) | $37,700 | 在上行基础上加专利 |
这张表最重要的不是总数,而是结构:商业秘密的五年成本 $12,500,比商标和著作权登记加起来还高;专利的五年成本 $21,000,单独一项就超过其余三项之和。很多团队把「申请专利」当成保护创新的默认动作,却忽略了年费和维护才是长期成本的大头。
著作权的 $1,500 也不是「必须花」。不登记同样拥有著作权,登记买的是举证便利。对 Tidecast,重点作品登记 5 件是折中:全部登记会把成本推高,完全不登记又会在侵权时缺少证据。商业秘密的 $12,500 则买不到任何证书,它买的是权限系统、保密协议和离职流程。
期限:保护期不等于收入期
| 类型 | 法定期限(教学假设) | 续展与年费 | 保护终止的条件 |
|---|---|---|---|
| 商标 | 10 年,可无限续展 | 每 10 年续展,另有监测费 | 不续展、连续不使用、被撤销 |
| 著作权 | 法人作品按发表后 70 年估算 | 无年费 | 期限届满,或无法证明归属 |
| 专利 | 自申请起 20 年 | 年费按年缴纳 | 不缴年费、被无效、期限届满 |
| 商业秘密 | 不设固定期限 | 持续投入保密措施 | 信息公开或被合法获取 |
法定期限很长,商业期限却很短。Tidecast 的游戏收入集中在发售期和长尾,一款横版解谜游戏的主要销售窗口通常只有几年;专利能保护 20 年,但第 15 年的年费不会因为产品已经停止更新而自动消失。用 20 年的保护期去论证一项专利值得申请,是把法律期限当成了收入期限。
把专利的 20 年成本摊开:申请费 $12,000,加 20 年年费 $1,800 × 20 = $36,000,合计 $48,000。前 5 年只花了 $21,000,剩余 15 年还要再付 $27,000。如果产品在第 3 年就不再贡献收入,后 17 年的年费就是纯支出;除非专利用于对外授权或防御性谈判,否则这笔钱的回报很难成立。
商标的期限逻辑相反:它可以无限续展,但每一次续展都要花钱,而且必须持续使用。Tidecast 如果三年后改名、停售或转做续作,旧商标的监测费仍可能继续发生;商标的价值来自持续使用和识别度,不是来自证书本身。著作权期限最长,但维权成本不会因为期限长而降低;商业秘密没有期限,却最脆弱,一次公开演示就可能让保护归零。
| 决策 | 看法律期限 | 看商业期限 | 应采用的口径 |
|---|---|---|---|
| 是否申请专利 | 20 年 | 产品收入窗口 3–5 年 | 按商业窗口算年费,不按 20 年摊 |
| 是否续展商标 | 可无限续展 | 品牌是否继续使用 | 不用就不续,避免沉没成本 |
| 是否登记著作权 | 保护期很长 | 举证需求集中在发行前后 | 重点作品登记,其余留证 |
| 是否投入保密 | 无固定期限 | 信息优势能维持多久 | 按信息生命周期配置权限 |
维权成本:组合的真实价格
IP 预算最容易漏掉的一项是维权。注册费是一次性的,年费是固定的,维权成本却按事件发生,而且通常比注册费高一个量级。下表把单次维权成本乘以假设的发生概率,得到期望准备金;概率是教学设定,不是统计结果。
| 类型 | 单次维权成本(教学假设) | 假设概率 | 期望准备金 |
|---|---|---|---|
| 商标 | $25,000 | 5 年 20% | $5,000 |
| 著作权 | $15,000 / 次 | 5 年 2 次 × 20% | $6,000 |
| 商业秘密 | $20,000 | 5 年 20% | $4,000 |
| 专利 | $100,000 | 5 年 20% | $20,000 |
把维权准备金加进五年预算,Tidecast 不含专利的组合是 $16,700 + $15,000 = $31,700;含专利的组合是 $37,700 + $35,000 = $72,700。专利让整个 IP 组合的成本从约 $3.2 万变成约 $7.3 万,差额 $41,000,超过组合中其他三项的总和。
这就是「哪些能注册、哪些自动产生、哪些只能靠保密」背后的商业判断:能注册不等于值得注册。商标值得注册,因为它是搜索入口和品牌识别;著作权自动产生,登记只买举证便利;商业秘密必须投入,因为代码和参数是持续竞争力;专利只有在技术方案可授权、可维权、可授权变现时才值得进入预算。
对 Tidecast,音乐是另一种情况:它持有的是买断授权,不是著作权本身,而且不得转授权。音乐可以随游戏一起分发,但不能单独授权给第三方,也不能在出售公司时当作可自由转让的资产。IP 组合表里把音乐写成「自有著作权」,会在尽调时变成一条需要解释的缺口。
代码:把 IP 组合翻译成预算
下面的 ip.ts 把四类 IP 的取得方式、期限、申请费、年费、续展和维权成本固化成一张表。protectionCost 按「年限 × 单位数」计算五年预算,portfolioCoverage 统计组合中注册、自动产生和保密三类各占多少,避免把「数量多」误当成「权利强」。
// file: src/contract/ip.ts
// tier: L1
// verify: node --test test/contract/ip.test.ts
import { type Cents } from "../core/money.ts";
import { type Bps, applyRate, divide } from "../core/rate.ts";
import { type Result, fail, ok } from "../core/result.ts";
export type IpKind = "trademark" | "copyright" | "patent" | "trade_secret";
export type Acquisition = "registration" | "automatic" | "secrecy";
export type IpProfile = {
kind: IpKind;
label: string;
subject: string;
acquisition: Acquisition;
termYears: number | null;
termNote: string;
filingCostCents: Cents;
annualCostCents: Cents;
renewalEveryYears: number | null;
renewalCostCents: Cents;
enforcementCostCents: Cents;
};
/**
* Costs are teaching assumptions, not quotes. Filing is charged per unit:
* a trademark class in one jurisdiction, a registered copyright work, a patent
* jurisdiction, or one secrecy program. Annual cost is per unit per year.
*/
export const IP_PROFILES: Record<IpKind, IpProfile> = {
trademark: {
kind: "trademark",
label: "商标",
subject: "品牌名称、标识、产品名",
acquisition: "registration",
termYears: 10,
termNote: "10 年一续,可无限续展(教学假设)",
filingCostCents: 120_000,
annualCostCents: 30_000,
renewalEveryYears: 10,
renewalCostCents: 100_000,
enforcementCostCents: 2_500_000,
},
copyright: {
kind: "copyright",
label: "著作权",
subject: "代码、美术、音乐、文字等原创表达",
acquisition: "automatic",
termYears: 70,
termNote: "创作完成即产生;法人作品按发表后 70 年估算(教学假设)",
filingCostCents: 30_000,
annualCostCents: 0,
renewalEveryYears: null,
renewalCostCents: 0,
enforcementCostCents: 1_500_000,
},
patent: {
kind: "patent",
label: "专利",
subject: "技术方案、机制、流程(须满足授权条件)",
acquisition: "registration",
termYears: 20,
termNote: "自申请起 20 年,不可续展(教学假设)",
filingCostCents: 1_200_000,
annualCostCents: 180_000,
renewalEveryYears: null,
renewalCostCents: 0,
enforcementCostCents: 10_000_000,
},
trade_secret: {
kind: "trade_secret",
label: "商业秘密",
subject: "未公开的算法、参数、客户名单、流程",
acquisition: "secrecy",
termYears: null,
termNote: "不设固定期限,保密状态存续期间有效",
filingCostCents: 0,
annualCostCents: 250_000,
renewalEveryYears: null,
renewalCostCents: 0,
enforcementCostCents: 2_000_000,
},
};
export const IP_KINDS: IpKind[] = [
"trademark",
"copyright",
"patent",
"trade_secret",
];
export type IpCostInput = {
kind: IpKind;
years: number;
units: number;
expectedDisputes?: number;
disputeProbabilityBps?: Bps;
};
export type IpCost = {
kind: IpKind;
years: number;
units: number;
filingCents: Cents;
annualCents: Cents;
renewalCents: Cents;
enforcementCents: Cents;
totalCents: Cents;
};
export type PortfolioCoverage = {
total: number;
registeredBps: Bps;
automaticBps: Bps;
secrecyBps: Bps;
};
function isIpKind(value: string): value is IpKind {
return (IP_KINDS as string[]).includes(value);
}
/**
* A five-year protection budget combines filing, annual maintenance, renewals
* inside the horizon, and a probability-weighted enforcement reserve. The
* horizon is deliberately separate from the legal term: a 20-year patent still
* needs a decision about how many of those years the business will fund.
*/
export function protectionCost(input: IpCostInput): Result<IpCost> {
if (!isIpKind(input.kind)) {
return fail(`unknown IP kind: ${input.kind}`);
}
if (
!Number.isInteger(input.years) ||
input.years <= 0 ||
input.years > 50
) {
return fail("years must be an integer between 1 and 50");
}
if (!Number.isInteger(input.units) || input.units <= 0 || input.units > 100) {
return fail("units must be an integer between 1 and 100");
}
const disputes = input.expectedDisputes ?? 0;
const probability = input.disputeProbabilityBps ?? 0;
if (!Number.isInteger(disputes) || disputes < 0) {
return fail("expected disputes must be a non-negative integer");
}
if (
!Number.isInteger(probability) ||
probability < 0 ||
probability > 10000
) {
return fail("dispute probability must be between 0 and 10000 bps");
}
const profile = IP_PROFILES[input.kind];
const filingCents = profile.filingCostCents * input.units;
const annualCents =
profile.annualCostCents * input.years * input.units;
const renewals =
profile.renewalEveryYears === null
? 0
: Math.floor(input.years / profile.renewalEveryYears);
const renewalCents =
renewals * profile.renewalCostCents * input.units;
const enforcementCents = applyRate(
profile.enforcementCostCents * disputes,
probability,
);
return ok({
kind: input.kind,
years: input.years,
units: input.units,
filingCents,
annualCents,
renewalCents,
enforcementCents,
totalCents:
filingCents + annualCents + renewalCents + enforcementCents,
});
}
/** Trademarks and patents are registered; copyright and secrecy are not. */
export function registrable(kind: IpKind): boolean {
return kind === "trademark" || kind === "patent";
}
/**
* A portfolio is not stronger because it has more items. This reports how much
* of it depends on registration, automatic copyright, or operational secrecy,
* so a buyer can see which assets need a chain-of-title review.
*/
export function portfolioCoverage(kinds: IpKind[]): Result<PortfolioCoverage> {
if (kinds.length === 0) {
return fail("portfolio needs at least one IP item");
}
const counts: Record<Acquisition, number> = {
registration: 0,
automatic: 0,
secrecy: 0,
};
for (const kind of kinds) {
if (!isIpKind(kind)) {
return fail(`unknown IP kind: ${kind}`);
}
counts[IP_PROFILES[kind].acquisition] += 1;
}
const total = kinds.length;
return ok({
total,
registeredBps: divide(counts.registration, total),
automaticBps: divide(counts.automatic, total),
secrecyBps: divide(counts.secrecy, total),
});
}
Tidecast 的参数跑出来是:商标 1 个单位 5 年 $2,700,著作权登记 5 件 $1,500,商业秘密 1 套 $12,500,专利 1 个辖区 $21,000;不含专利合计 $16,700,含专利 $37,700。组合覆盖按五项资产计算:三件著作权资产(含代码与美术)、一件商标、一项商业秘密;注册类只占 20%,自动产生占 60%,保密类占 20%。这个比例说明,Tidecast 的 IP 组合大部分不靠注册,而靠创作记录和保密流程;真正需要主动维护的注册项只有商标。
代码里的 registrable 只回答「这类权利是否通过注册取得」,不回答「是否值得注册」。专利和商标都返回 true,但两者的成本结构完全不同;把 registrable 当成申请建议,会重复本节开头批评的那种混淆。费用参数全部是教学假设,替换成真实报价时,结论可能变化,但计算结构不变。
小结
- 四类 IP 保护对象不同:商标保护来源识别,著作权保护表达,专利保护技术方案,商业秘密保护未公开信息。
- 取得方式决定成本结构:商标和专利靠注册,著作权自动产生,商业秘密靠持续保密;没有一种方式同时做到便宜、长久、边界清楚。
- Tidecast 五年 IP 预算(教学假设):商标 $2,700、著作权登记 $1,500、商业秘密 $12,500、专利 $21,000;不含专利 $16,700,含专利 $37,700。
- 期限不等于收入期:专利 20 年总成本约 $48,000,但游戏收入窗口通常只有几年;按商业窗口而不是法律期限做申请决策。
- 维权成本必须进入预算:不含专利的期望准备金 $15,000,含专利 $35,000;专利把组合总成本从 $31,700 推到 $72,700。
- 音乐是买断授权而非自有著作权,且不得转授权;把它写成自有资产,会在出售或尽调时变成缺口。
- 组合覆盖率比数量更重要:Tidecast 五项资产中注册类只占 20%,多数价值依赖创作记录与保密流程。
阅读导航:上一节:6.3 投保时点与理赔流程 · 下一节:7.2 开源许可证的商业边界 。
常见错误与边界
- 把 IP 当成一张证书。 商标、著作权、专利、商业秘密是四套机制,取得方式、期限和成本都不同;用一个「IP 预算」科目会把它们混在一起。
- 以为著作权需要注册才产生。 著作权在创作完成时自动产生;登记买的是举证便利,不是权利本身。
- 把专利当成保护的默认动作。 专利的申请费、年费和维权费加在一起,通常高于一人工作室能从中获得的收入。
- 用 20 年保护期摊薄年费。 产品收入窗口只有几年,专利年费却按 20 年发生;应按商业窗口计算,不按法律期限。
- 忽略商标的持续使用与续展。 商标可以无限续展,但不使用、不续展、被撤销都会让权利消失;证书不是永久资产。
- 把商业秘密当成零成本。 保密需要访问控制、协议、权限分级和离职流程;没有这些措施,商业秘密很难成立。
- 只看注册费,不看维权成本。 一次专利维权的量级可能是申请费的数倍;组合预算必须包含期望准备金。
- 把买断授权当成自有著作权。 Tidecast 的音乐不得转授权;它能随游戏分发,但不能单独授权或自由转让。
- 用资产数量衡量 IP 强度。 五项资产里注册类只占 20%,数量多不等于权利强;要看覆盖方式和可转让性。
- 把教学假设当成报价。 本节所有费用都是用于比较量级的假设,真实申请与维权成本必须按辖区、类别和案件重新询价。
IP 组合的财务价值,最终不取决于证书数量,而取决于三件事:权利能否证明、能否转让、维权成本是否付得起。下一节讨论开源许可证:它不增加你的 IP,却会改变你能否闭源分发、是否必须公开修改,以及对外提供服务时要不要把源码交出去。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。