企业合同 AIGC 生成 + 区块链存证:智能合约化的工作流
企业合同 AIGC 生成 区块链存证智能合约化的工作流一、合同模板 填空式生成法务审到怀疑人生企业合同的生成和管理是一个极度依赖模板和人工审核的流程。一个典型的合同签署流程销售填模板 → 法务审核 → 修改 → 再审核 → 双方签字 → 扫描归档。这个过程平均耗时 3-5 个工作日。而且因为合同以 PDF 形式存储在共享文件夹中事后查找某个条款的历史版本几乎不可能。AIGC 区块链的组合可以解决两个问题AIGC 负责智能生成根据交易背景自动起草条款减少人工填充区块链负责存证合同哈希上链防止事后篡改。但这套方案的关键不是技术本身而是如何将人审核的环节嵌入自动化的流程中。二、智能合约化的工作流架构核心设计是生成-审核-签署-存证的闭环每一个状态变更都在链上留下记录合同生成的时间、法务审核的结果、签署的时间点——这些构成了完整的合规证据链。三、Python 实现合同 AIGC 生成 上链存证import hashlib import json import time from enum import Enum from dataclasses import dataclass, asdict, field from typing import List, Dict, Optional, Any from datetime import datetime class ContractStatus(Enum): 合同状态 DRAFT draft # 草稿 LEGAL_REVIEW legal_review # 法务审核中 PENDING_SIGN pending_sign# 待签署 SIGNED signed # 已签署 ARCHIVED archived # 已归档 dataclass class ContractElement: 合同要素 party_a: str # 甲方 party_b: str # 乙方 amount: float # 合同金额 currency: str CNY service_scope: str # 服务内容 start_date: str # 合同开始日期 YYYY-MM-DD end_date: str # 合同结束日期 payment_terms: str # 付款条件 special_clauses: List[str] field(default_factorylist) dataclass class ContractRecord: 合同链上记录 contract_id: str status: ContractStatus content_hash: str # 合同内容哈希 created_at: int # Unix 时间戳 legal_reviewed_at: Optional[int] None legal_reviewer: Optional[str] None legal_approved: bool False signed_at: Optional[int] None signer_a_hash: Optional[str] None # 甲方签名哈希 signer_b_hash: Optional[str] None # 乙方签名哈希 class ContractChain: 简化版区块链实际项目对接联盟链 def __init__(self): self._records: Dict[str, List[ContractRecord]] {} def store(self, contract_id: str, record: ContractRecord) - bool: 存证一条合同状态变更 if contract_id not in self._records: self._records[contract_id] [] self._records[contract_id].append(record) return True def query(self, contract_id: str) - List[ContractRecord]: 查询合同全生命周期记录 return self._records.get(contract_id, []) def verify(self, contract_id: str, content_hash: str) - bool: 验证合同哈希是否与链上一致 records self.query(contract_id) if not records: return False # 检查最新的 SIGNED 状态记录的哈希 for record in reversed(records): if record.status ContractStatus.SIGNED: return record.content_hash content_hash return False class ContractGenerator: AIGC 合同生成器 TEMPLATES { service: # 服务合同 甲方{party_a} 乙方{party_b} ## 一、服务内容与范围 {service_scope} ## 二、合同期限 自 {start_date} 至 {end_date} ## 三、合同金额与支付方式 合同总金额{amount:,.2f} {currency} 支付方式{payment_terms} ## 四、双方权利与义务 1. 甲方应按约定时间支付合同款项 2. 乙方应按约定的服务质量标准完成服务 3. 任何一方变更合同内容需提前 15 个工作日书面通知对方 ## 五、违约责任 1. 甲方逾期付款每逾期一日按未付款项的 0.05% 支付违约金 2. 乙方未按约定完成服务应承担相应的赔偿责任 ## 六、争议解决 双方协商不成的提交合同签订地人民法院裁决 ## 七、其他 {special_clauses_text} .strip() } def __init__(self): self.chain ContractChain() def generate_contract( self, elements: ContractElement, contract_type: str service ) - Dict[str, Any]: 生成合同 存证 if elements.amount 0: raise ValueError(合同金额必须大于 0) if not elements.party_a or not elements.party_b: raise ValueError(甲乙双方名称不能为空) template self.TEMPLATES.get(contract_type) if template is None: raise ValueError(f不支持的合同类型: {contract_type}) # 组装特殊条款 special_text \n.join( f {i1}. {clause} for i, clause in enumerate(elements.special_clauses) ) if elements.special_clauses else 无 # 填充模板 contract_text template.format( party_aelements.party_a, party_belements.party_b, amountelements.amount, currencyelements.currency, service_scopeelements.service_scope or 详见附件, start_dateelements.start_date or 合同签订之日, end_dateelements.end_date or 服务完成之日, payment_termselements.payment_terms or 按约定支付, special_clauses_textspecial_text, ) # 生成合同 ID contract_id self._generate_id(elements) # 计算哈希 content_hash self._compute_hash(contract_text) # AIGC 合规检查 warnings self._compliance_check(elements, contract_text) # 上链存证DRAFT 状态 record ContractRecord( contract_idcontract_id, statusContractStatus.DRAFT, content_hashcontent_hash, created_atint(time.time()), ) self.chain.store(contract_id, record) return { contract_id: contract_id, contract_text: contract_text, content_hash: content_hash, compliance_warnings: warnings, status: ContractStatus.DRAFT.value, tx_id: ftx_{int(time.time()):08d}, } def legal_review( self, contract_id: str, reviewer: str, approved: bool ) - bool: 法务审核存证 record ContractRecord( contract_idcontract_id, statusContractStatus.LEGAL_REVIEW, content_hash, # 审核不改变内容沿用之前哈希 created_atint(time.time()), legal_reviewed_atint(time.time()), legal_reviewerreviewer, legal_approvedapproved, ) self.chain.store(contract_id, record) return True def record_signature( self, contract_id: str, signer: str, contract_text: str, ) - Dict[str, Any]: 签署存证 # 模拟数字签名 signer_hash self._compute_hash( f{signer}_{contract_text}_{time.time()} ) content_hash self._compute_hash(contract_text) record ContractRecord( contract_idcontract_id, statusContractStatus.SIGNED, content_hashcontent_hash, created_atint(time.time()), signed_atint(time.time()), signer_a_hashsigner_hash if 甲 in signer else None, signer_b_hashsigner_hash if 乙 in signer else None, ) self.chain.store(contract_id, record) return { contract_id: contract_id, signed_at: datetime.now().isoformat(), signer: signer, content_hash: content_hash, verified: self.chain.verify( contract_id, content_hash ), } def verify_contract( self, contract_id: str, contract_text: str ) - Dict[str, Any]: 验证合同完整性 current_hash self._compute_hash(contract_text) chain_records self.chain.query(contract_id) if not chain_records: return { verified: False, reason: 链上未找到该合同记录, } # 获取最近的签署记录 signed_record None for record in reversed(chain_records): if record.status ContractStatus.SIGNED: signed_record record break if signed_record is None: return { verified: False, reason: 合同尚未签署, lifecycle: [ {status: r.status.value, time: r.created_at} for r in chain_records ], } verified signed_record.content_hash current_hash return { verified: verified, current_hash: current_hash, chain_hash: signed_record.content_hash, lifecycle: [ { status: r.status.value, time: datetime.fromtimestamp( r.created_at ).isoformat(), reviewer: r.legal_reviewer, } for r in chain_records ] if verified else [], } def _compliance_check( self, elements: ContractElement, text: str ) - List[str]: 合规性检查 warnings [] # 金额异常检查 if elements.amount 1000: warnings.append(合同金额较低建议确认是否为测试合同) if elements.amount 10000000: warnings.append(合同金额超过 1000 万建议高级法务审核) # 关键条款缺失检查 if not elements.payment_terms: warnings.append(未填写付款条件建议补充) if not elements.start_date: warnings.append(未指定合同开始日期将使用默认值) return warnings staticmethod def _compute_hash(content: str) - str: return hashlib.sha256(content.encode(utf-8)).hexdigest() staticmethod def _generate_id(elements: ContractElement) - str: raw f{elements.party_a}{elements.party_b}{time.time()} return fCONTRACT-{hashlib.md5(raw.encode()).hexdigest()[:12].upper()}四、边界分析与 Trade-offsAIGC 生成 vs 人工审核的边界AI 可以生成合同的 80%——标准条款、金额、日期、双方信息。但剩余 20% 的关键条款违约责任、知识产权归属、保密条款必须人审。AIGC 应做一个条款风险提示功能——对每个自动生成的条款打风险分如违约金比例高于行业标准 2 倍 → 高风险提示辅助法务快速定位需要重点看的段落。区块链上存什么、不存什么只存哈希 时间戳 签名不存合同原文。合同原文可能包含商业机密不适合公开上链。验证时用户本地持有合同文件重新计算哈希与链上比对即可。这种方案既满足存证需求又保护商业隐私。合同模板的版本管理AIGC 依赖模板模板一旦更新如法律条款调整之前用旧模板生成的合同和之后用新模板生成的合同可能不一致。模板应该版本化管理v1.0/v2.0链上存证时附带模板版本号方便事后追溯当时的条款依据是什么版本的模板。多签流程的并发甲方和乙方可能同时签署链上存证需要处理并发写入。可以使用乐观锁——只有当 contracts 最新状态是 PENDING_SIGN 时才写入 SIGNED。如果状态已被对方修改如一方签约后另一方拒绝需要回滚处理。五、总结合同 AIGC 生成 区块链存证的工程价值不在于替代法务而在于加速非关键环节聚焦人工审核在关键条款上。AIGC 负责模板填充80% 标准内容法务负责风险审核20% 关键条款区块链负责全链路存证生成、审核、签署三个阶段全部上链。代码实现上合同的哈希计算要覆盖完整内容不能只算模板部分链上不存原文但存模板版本号验证链路从当前内容哈希 → 链上记录两个点比对。这个方案在新合同法的框架下为电子合同提供了可验证的原件证明。

相关新闻

人工智能基础:机器学习与深度学习核心概念解析

人工智能基础:机器学习与深度学习核心概念解析

1. 人工智能基础概念解析人工智能作为当前科技领域最炙手可热的话题之一,其核心概念体系构成了理解这一技术的基石。在第十七讲中,我们将重点剖析几个关键的基础性概念,这些名词看似简单,却往往蕴含着深刻的技术内涵和应用逻辑。机…

2026/10/25 13:20:56 阅读更多 →
Python五子棋AI对战工具:带图形界面、α-β剪枝和棋型识别的可运行项目

Python五子棋AI对战工具:带图形界面、α-β剪枝和棋型识别的可运行项目

本文还有配套的精品资源,点击获取 简介:直接运行就能玩的五子棋人机对战程序,黑棋由玩家操作,白棋由AI自动应对。使用1515标准棋盘,基于极小极大算法构建决策逻辑,通过α-β剪枝显著减少无效搜索&#x…

2026/10/25 9:49:37 阅读更多 →
Claude Code 三层架构Subagent并发优化实战

Claude Code 三层架构Subagent并发优化实战

Claude Code 三层架构 Subagent:10 并发屠夫榜 适用读者:想用 Claude Code Subagent 跑大型 monorepo 并行重构、正在评估 Sonnet / Fable / DeepSeek / 国产编程模型兼容性的工程团队负责人 阅读时长:约 12 分钟 测试时间:2026 年 7 月(基于 炻光 AI 接入管理平台 公开文档) 一…

2026/10/24 18:29:05 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/26 12:00:21 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/27 4:06:49 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/27 7:21:53 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/26 12:00:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/27 6:20:47 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/27 4:06:50 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 13:55:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 7:21:50 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 8:34:37 阅读更多 →