找回密码
 新注册用户
搜索
查看: 18994|回复: 5

[技术贴] 关于CPID (Cross-Project ID)

[复制链接]
发表于 2006-2-10 18:25:12 | 显示全部楼层 |阅读模式
转自http://boinc-doc.net/boinc-wiki/index.php?title=CPID

Cross-Project Identification of Participants

用户的跨项目标识符(CPID)

Accounts on different BOINC Powered Projects are considered equivalent if they have the same email address (the BOINC Developers had considered other concepts, but they all lead to extreme complexity).

不同BOINC项目的帐号,只要使用了相同的email地址,就认为是由同一个用户创建的。

BOINC Powered Projects can't export email addresses in statistics files; email addresses are private. It's also not desirable to export hashed email addresses, because spammers could enumerate feasible email addresses and compare them with the hashed addresses.

但BOINC项目网站不能在对外提供的统计信息文件中提供email地址,因为email地址是不方便公开的。就算对其进行某些处理,也不能防止别有用心的人想方设法找出原始的email地址。

To solve these problems the BOINC System uses the following system:

为了解决这个问题,BOINC采用了如下的方法:

Each Account is assigned a "Cross-Project Identifier" (CPID) when it's created; it's a long random string.

每个帐号在被创建时被随机分配一个字符串,即跨项目标识符,简称CPID。

When a Scheduling Server replies to an Scheduler Request Message (Scheduler RPC)), it includes the Account's Cross-Project Identifier and hashed e-Mail address.

当调度服务器回应客户端的请求时,将在回应中包含这个帐号的CPID和处理过的email地址。

The BOINC Manager stores the Cross-Project Identifier and hashed e-Mail address of each Account to which it's attached in the Client State File.

客户端将服务器发送过来的CPID及处理过的email地址保存在配置文件中。

When the BOINC Daemon sends an Scheduler Request Message to a Scheduling Server, it includes the greatest (in terms of numeric comparison) Cross-Project Identifier from among Projects with the same hashed e-Mail address.

当客户端向服务器发送请求时,它将对比本机中其它项目的处理过的email地址,如果和当前项目相同,它将从中找出最大的CPID,并在请求中包含这个CPID。

Note: This method was depreciated at approximately Version 4.3x of the BOINC Client Software. Later Versions pass the oldest Cross-Project Identifier. This prevents the Cross-Project Identifier from changing when adding Projects.

注意:前段所述仅适用于4.3x之前版本的客户端。之后的版本在请求中包含的是本机最早注册的项目的CPID,这样就不会发生加入新项目后导致CPID被改变的情况了。

程序中的相关代码如下:

  1.    // Of the projects with same email hash as this one,
  2.     // send the oldest cross-project ID.
  3.     // Use project URL as tie-breaker.
  4.     //

  5.     PROJECT* winner = p;
  6.     for (i=0; i<projects.size(); i++ ) {
  7.         PROJECT* project = projects[i];
  8.         if (project == p) continue;
  9.         if (strcmp(project->email_hash, p->email_hash)) continue;
  10.         if (project->user_create_time < winner->user_create_time) {
  11.             winner = project;
  12.         } else if (project->user_create_time == winner->user_create_time) {
  13.             if (strcmp(project->master_url, winner->master_url) < 0) {
  14.                 winner = project;
  15.             }
  16.         }
  17.     }
  18.     fprintf(f,
  19.         "<cross_project_id>%s</cross_project_id>\n",
  20.         winner->cross_project_id
  21.     );
复制代码


If the Scheduling Server receives a Cross-Project Identifier different from the one in its BOINC Database, it updates the BOINC Database with the new Cross-Project Identifier.

如果调度服务器收到的请求中包含的CPID与服务器上保存的不同,它就将新的CPID保存下来。

User elements in the XML download files include a hash of (email address, Cross-Project Identifier); this "export" Cross-Project Identifier serves as a unique identifier of all accounts with that email address. The last step, hashing with the e-Mail address, prevents people from impersonating other people.

This system provides cross-project identification based on e-Mail address, without publicizing any information from which actual e-Mail addresses could be derived.

系统就这样提供了一种基于email地址的跨项目标识方案,同时也并没有对外泄漏任何关于email地址的信息。

Note:
There is a Cross-Project Identifier that is internal to Projects, and a second one that is used to tie together XML data exports. When you are using the Cross-Project Identifier for statistic sites you will have to use the second value which you will have to obtain using information such as your name (or alias if you use one).

[ Last edited by Youth on 2006-2-11 at 10:15 ]
回复

使用道具 举报

 楼主| 发表于 2006-2-10 18:26:41 | 显示全部楼层
我今天尝试boincstats的签名,搜索用户名Yin Gang,居然出来两个条目(不久以前还没这种情况),一个条目关联了大多数项目,一个条目只关联了Rosetta、Predictor、WCG这几个项目,研究了半天没明白怎么回事后,突然发现这正好就是我在本本上所参加的项目,而且WCG还是前两天才加入的。结合上面的文章,发现问题就出在WCG:一方面我刚注册这个项目的BOINC版本,所以新生成了一个CPID;但另一方面,WCG的传统版本我大概04年底就注册了,而其BOINC版本所用的帐号创建时间正是这个时间,于是就导致本本上的客户端将这个新CPID作为最早的CPID发送给了各个项目的服务器,于是就有了前面的问题。

解决方法:在客户端加入SETI项目,这个可是最早注册的帐号了,然后耐心等待一切回复正常:)


图片说明:

前面两张图就是由于CPID不同导致的,因为我在多台机器上同时算einstein,导致einstein的cpid变来变去,就两张图里面都有了。

最后一张图里总分的排名是黄颜色,也是由这个问题引起的。

[ Last edited by Youth on 2006-2-11 at 10:16 ]
user_117603.png
user_524669.png
comb-855.jpg
回复

使用道具 举报

 楼主| 发表于 2006-2-11 10:16:45 | 显示全部楼层
今天早上起来看已经正常了
user_117603.png
回复

使用道具 举报

发表于 2006-2-13 11:50:20 | 显示全部楼层
有个相关信息 http://www.equn.com/forum/viewth ... mp;page=1#pid182668
或,
直接登录BOINC主站,登录“Your account 您的帐号”,
在页面中部 “Account statistics”有Cross-project statistics,
及:Cross-project ID: b6cb880dd24cedca425cb2cb0e44****
回复

使用道具 举报

 楼主| 发表于 2006-2-13 12:00:19 | 显示全部楼层
嗯,CPID就是在官方网站的个人页面查看到的一长串字母数字
回复

使用道具 举报

发表于 2007-9-22 20:06:30 | 显示全部楼层
只要在某一臺活著的機子上加入你所有的項目(不想算的就禁止下載)就好了
CPID亂了,就點一下“重試所有連接”,過一會,各網的就統一了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 新注册用户

本版积分规则

论坛官方淘宝店开业啦~

Archiver|手机版|小黑屋|中国分布式计算总站 ( 沪ICP备05042587号 )

GMT+8, 2024-4-20 18:06

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表